小编Erd*_*rás的帖子

C 表达式必须是可修改的左值(我为什么要使用此表达式)

我有这个带有 ?: 运算符的表达式:

(adc.Voltage1[Counter.ADC_ConversionCount] = ADC_readResult(Handler.myAdc, ADC_ResultNumber_1))  > 10 ? Counter.WriteOut = 1 : Counter.WriteOut = 0;
Run Code Online (Sandbox Code Playgroud)

与 if-else 相同的表达式:

if((adc.Voltage1[Counter.ADC_ConversionCount] = ADC_readResult(Handler.myAdc, ADC_ResultNumber_1)) > 10 ){
    Counter.WriteOut = 1;
}else{
    Counter.WriteOut = 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么在第一种情况下会出现“表达式必须是可修改的左值”错误?

ADC_readResult 函数返回类型是 uint_least16_t。这是 Counter 结构体定义和 ADC 结构体定义:

typedef struct __COUNTERS__ {
    uint16_t WriteOut;
    uint16_t ADC_ConversionCount;
    uint16_t ADC_CycleCount;
    uint8_t LimitADCReached1;
    uint8_t LimitADCReached2;
    uint8_t LimitADCReached3;
    uint8_t LimitADCReached4;
    uint8_t LimitADCReached5;
} COUNTERS;

typedef struct __ADC_VOLTAGES__ {
    uint16_t Voltage1[ADC_VAL];
    uint16_t Voltage2[ADC_VAL];
    uint16_t Voltage3[ADC_VAL];
    uint16_t Voltage4[ADC_VAL];
    uint16_t Voltage5[ADC_VAL];

} …
Run Code Online (Sandbox Code Playgroud)

c if-statement

2
推荐指数
1
解决办法
665
查看次数

标签 统计

c ×1

if-statement ×1