【发布时间】:2020-05-18 07:17:16
【问题描述】:
(a > b) ? c = 10 : (a < b) ? c = 20 : c = 30;
为什么这段代码会出现名为“表达式不可接受”的错误??
错误消息说“c = 30”这部分出错了。
【问题讨论】:
-
我建议您避免嵌套条件运算符。令人困惑。
-
确实这样的代码是不可接受的,不管你是否编译它。用 if 语句写这个,所有问题都会消失。
(a > b) ? c = 10 : (a < b) ? c = 20 : c = 30;
为什么这段代码会出现名为“表达式不可接受”的错误??
错误消息说“c = 30”这部分出错了。
【问题讨论】:
因为三元运算符?:优先于=,所以表达式被解析为:
((a > b) ? c = 10 : (a < b) ? c = 20 : c) = 30;
因为您不能“分配”给(a > b) ? c = 10 : (a < b) ? c = 20 : c,所以您的编译器会出错。你想要:
(a > b) ? c = 10 : (a < b) ? c = 20 : (c = 30);
但写起来真的更好:
c = (a > b) ? 10 : (a < b) ? 20 : 30;
【讨论】: