1

可能重复:
C 逗号运算符

我遇到了一行我无法理解的代码。我记得在某处看到过类似的东西。

int x,y,z;
x=(y=2,z=2*y,z+4);

我知道分配给 x 的值为 8。有人能解释一下为什么吗?

4

2 回答 2

4

这相当于:

 y = 2;      // y == 2
 z = 2 * y;  // z == 4
 x = z + 4;  // x == 8

逗号运算符的操作数从左到右求值,结果是右操作数的值。

于 2012-12-31T12:03:08.387 回答
0

逗号运算符分隔前面的值,逗号中的最后一项作为结果返回,例如

a = b,c 

将 c 的值赋给 a。这里的括号基本上什么都不做,顺便说一句

所以你有两个赋值,然后是一个语句,它的结果被返回并赋值给 x

于 2012-12-31T12:05:24.553 回答