int x = 0;
int y = 2;
int z = (++x, ++y);
我认为z是3,因为该值取自++ y,但为什么选择++ y?
答案 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;