为什么三元运算符中的多个语句没有执行
这个问题在这里已经有了答案:
由于运营商的优先。 你的表达评估为
((a) ? (nb++, nb2++) : nb--), nb2--;
操作员,
( comma
)是处理的最后一件事。 而这个例子根本不能编译
条件运算符中间的表达式(?和:)之间的表达式被解析为加括号。
有关详细信息,请参阅C ++运算符优先级。
这是预期的行为。
编译器将您的表达理解为:
((a) ? (nb++, nb2++) : nb--), nb2--;
有关更多详情,请参阅
使用假设:
a ? (nb++, nb2++) : (nb--, nb2--);
原因:词法分析
链接地址: http://www.djcxy.com/p/73237.html上一篇: Why are multiple statements in ternary operator not executed