C中的奇怪变量赋值

时间:2012-12-31 12:01:48

标签: c variable-assignment

  

可能重复:
  C comma operator

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

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

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

2 个答案:

答案 0 :(得分:4)

这相当于:

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

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

答案 1 :(得分:0)

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

a = b,c 

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

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