【问题标题】:proper use of the ternary operator in a function strToInt (C)在函数 strToInt (C) 中正确使用三元运算符
【发布时间】:2017-06-04 12:19:19
【问题描述】:
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

【问题讨论】:

  • 我建议你改用i = minus == false ? 0 : 1 之类的方法。更改您拥有的两个实例。
  • 你想要i = (minus == false) ? 0 : 1 或者只是i = (minus != false)
  • 或者这个。 i = !!minus
  • 或者,当然是i=minus

标签: c operator-keyword ternary


【解决方案1】:

使用(例如)

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

还有……

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

【讨论】:

  • 结果 = 结果 * 10 + 减? (-intValue):intValue; share.pho.to/AarrP
  • :) 我已经修好了。结果 = 结果 * 10 + (减 ? -intValue : intValue);
【解决方案2】:

minus == false ? i = 0 : i = 1 将被解析为 (minus == false ? i = 0 : i) = 1 因为运算符优先规则。在评估minus == false ? i = 0 : i 之后,运算符= 的左侧将成为右值,但赋值运算符必须有一个左值作为其左操作数。
改成minus == false ? (i = 0) : (i = 1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-18
    • 1970-01-01
    • 2013-01-23
    • 1970-01-01
    • 2020-11-23
    • 2016-11-21
    • 1970-01-01
    • 2023-03-05
    相关资源
    最近更新 更多