【问题标题】:Why does the error "expression is not acceptable" appear?为什么会出现“表达式不可接受”的错误?
【发布时间】:2020-05-18 07:17:16
【问题描述】:
(a > b) ? c = 10 : (a < b) ? c = 20 : c = 30;

为什么这段代码会出现名为“表达式不可接受”的错误??

错误消息说“c = 30”这部分出错了。

【问题讨论】:

  • 我建议您避免嵌套条件运算符。令人困惑。
  • 确实这样的代码是不可接受的,不管你是否编译它。用 if 语句写这个,所有问题都会消失。

标签: c conditional-operator


【解决方案1】:

因为三元运算符?:优先于=,所以表达式被解析为:

((a > b) ? c = 10 : (a < b) ? c = 20 : c) = 30;

因为您不能“分配”给(a &gt; b) ? c = 10 : (a &lt; b) ? c = 20 : c,所以您的编译器会出错。你想要:

(a > b) ? c = 10 : (a < b) ? c = 20 : (c = 30);

但写起来真的更好:

c = (a > b) ? 10 : (a < b) ? 20 : 30;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-22
    • 1970-01-01
    • 2020-11-30
    • 1970-01-01
    • 2021-01-08
    • 1970-01-01
    相关资源
    最近更新 更多