C语句执行问题
int x, y, z;x = (x = 1, y = z = 2, y++, z++);
如图,这句话是怎么执行的?
求大神指教。谢谢
为什么 x 最终为2?? 这是一条复合语句,首先执行括号里的逗号运算符,从左到右,先是x被赋值为5,然后再是z被赋值为2,再是y被赋值为2,接着y自增1变成3,到了最后,z的值先被引用赋给想x,然后z才自增1为3.因为逗号运算符的结果是最右边的那条语句的值。 这是一条复合语句,首先执行括号里的逗号运算符,从左到右,先是x被赋值为5,然后再是z被赋值为2,再是y被赋值为2,接着y自增1变成3,到了最后,z的值先被引用赋给想x,然后z才自增1为3.因为逗号运算符的结果是最右边的那条语句的值。 拆一下:
x = 1;
z = 2;
y = z;
y++;
z++;
x = z; 括号中为逗号表达式,依次执行:
x = 1;
y = z = 2;
y++;
z++;
整个逗号表达式的值为最后一个表达式的值,即z++的值,为2,因为自增运算符在z之后,最后将2赋值给x,因此最终x的值为2. 支持一下lz
页:
[1]