我不明白这个--- int x = 0; int y = 2; int z =(++ x,++ y);

时间:2013-12-01 07:08:34

标签: c++

int x = 0; 
int y = 2; 
int z = (++x, ++y);

我认为z是3,因为该值取自++ y,但为什么选择++ y?

3 个答案:

答案 0 :(得分:3)

它被称为comma operator。它评估++x(现在x为1),然后评估++y(现在y为3)并赋值y to z``

``逗号运算符从左到右分组。 §5.18

  

用逗号分隔的一对表达式从左到右进行评估,左侧表达式的值被丢弃

答案 1 :(得分:2)

因为(++ x,++ y)首先评估++x,所以++y和最后评估的内容将被返回并分配给z

答案 2 :(得分:0)

这使用comma operator。相当于:

int x = 0; 
int y = 2; 
++x; // or x = x + 1;
++y; // or y = y + 1;
int z = y;