C ++运算符优先级示例

时间:2014-02-05 03:20:46

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

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

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

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

1 个答案:

答案 0 :(得分:3)

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

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