在函数strToInt(C)中正确使用三元运算符

时间:2017-01-19 17:20:47

标签: c operator-keyword ternary

for (minus == false ? i = 0 : i = 1; string[i] >= '0' && string[i] <= '9'; ++i)
    {
        intValue = string[i] - '0';

        minus == false ? result = result * 10 + intValue : 
            result = result * 10 - intValue;

    }
  

错误:表达式不可分配   截图 - http://share.pho.to/AarcJ

https://codeshare.io/5Pdd7X

2 个答案:

答案 0 :(得分:2)

由于运算符优先级规则,

minus == false ? i = 0 : i = 1将被解析为(minus == false ? i = 0 : i) = 1。评估minus == false ? i = 0 : i后,运算符=的左侧将变为右值,但赋值运算符必须将左值作为左操作数。
将其更改为minus == false ? (i = 0) : (i = 1)

答案 1 :(得分:1)

使用(例如)

for (i = minus? 1:0; string[i].... etc

和...

result = result * 10 + minus? (-lastvalue) : lastvalue;