为什么三元运算符中的多个语句没有执行

这个问题在这里已经有了答案:

  • 未定义的行为和序列点4个答案
  • C ++中条件运算符中的逗号运算符的优先级是什么? 3个答案

  • 由于运营商的优先。 你的表达评估为

    ((a) ? (nb++, nb2++) : nb--), nb2--;
    

    操作员,comma )是处理的最后一件事。 而这个例子根本不能编译

    条件运算符中间的表达式(?和:)之间的表达式被解析为加括号。

    有关详细信息,请参阅C ++运算符优先级。


    这是预期的行为。

    编译器将您的表达理解为:

    ((a) ? (nb++, nb2++) : nb--), nb2--;
    

    有关更多详情,请参阅

  • 在条件三元运算符中使用逗号时发现的东西?
  • https://en.wikipedia.org/wiki/Comma_o​​perator

  • 使用假设:

    a ? (nb++, nb2++) : (nb--, nb2--);
    

    原因:词法分析

    链接地址: http://www.djcxy.com/p/73237.html

    上一篇: Why are multiple statements in ternary operator not executed

    下一篇: Unexpected order of evaluation (compiler bug?)