【问题标题】:C++ Operator Precedence exampleC++ 运算符优先级示例
【发布时间】:2014-03-01 08:06:17
【问题描述】:

我试图弄清楚以下表达式如何根据优先级进行分组:

int x = 0, y = 0;
someValue ? ++x, ++y : --x, --y;

当 someValue 为 0 (false) 时,计算第二部分,x 和 y 都变为 -1。但是,如果 someValue 为 1 (true),那么 x 以某种方式变为 1 但 y 仍然为 0,这意味着条件表达式的第二部分也被评估,但只有 --y 部分,我认为这是因为逗号运算符,但是我一生都无法弄清楚这是如何实现的。任何见解将不胜感激。

【问题讨论】:

    标签: c++ conditional comma evaluation operator-precedence


    【解决方案1】:

    , 在所有运算符中的优先级最低,因此您的表达式被解析为

    (someValue ? ++x, ++y : --x), --y;
    

    【讨论】:

    • 好的,但是第一个','呢?既然 ',' 已经离开了结合性,为什么左边的 ',' 不覆盖表达式直到结束?
    • 好吧,如果你在第一个逗号处分割,你不会得到一个有效的解析。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-24
    • 2017-06-02
    • 1970-01-01
    • 2019-01-17
    • 2021-03-29
    • 2013-07-31
    相关资源
    最近更新 更多