▃黑衣大葛格 发表于 2015-1-26 17:16:10

C语句执行问题

        int x, y, z;
        x = (x = 1, y = z = 2, y++, z++);
如图,这句话是怎么执行的?

求大神指教。谢谢

▃黑衣大葛格 发表于 2015-1-26 17:17:02

为什么 x 最终为2??

静清心花 发表于 2015-1-26 20:39:52

这是一条复合语句,首先执行括号里的逗号运算符,从左到右,先是x被赋值为5,然后再是z被赋值为2,再是y被赋值为2,接着y自增1变成3,到了最后,z的值先被引用赋给想x,然后z才自增1为3.因为逗号运算符的结果是最右边的那条语句的值。

night2008 发表于 2015-1-29 17:49:57

这是一条复合语句,首先执行括号里的逗号运算符,从左到右,先是x被赋值为5,然后再是z被赋值为2,再是y被赋值为2,接着y自增1变成3,到了最后,z的值先被引用赋给想x,然后z才自增1为3.因为逗号运算符的结果是最右边的那条语句的值。

methamphetamine 发表于 2015-2-2 22:57:39

拆一下:
x = 1;
z = 2;
y = z;
y++;
z++;
x = z;

aswyamato1989 发表于 2015-2-3 08:43:23

括号中为逗号表达式,依次执行:

x = 1;
y = z = 2;
y++;
z++;

整个逗号表达式的值为最后一个表达式的值,即z++的值,为2,因为自增运算符在z之后,最后将2赋值给x,因此最终x的值为2.

d5zhao 发表于 2015-4-16 04:53:52

支持一下lz
页: [1]
查看完整版本: C语句执行问题