因为y++,x+=++y;是逗号表达式,所以最终值是x+=++y;还有x+=++y等价于x=x+(++y)
0<15 y=1,x=0+2;//x=2,y=2
2<15 y=3,x=2+4;//x=6,y=4
6<15 y=5,x=6+6;//x=12,y=6
12<15 y=7,x=12+8;//x=20,y=8
20<15 不成立
输出:y=8,x=20
y++会先使用y值再自加1,++y会先加1再使用y值;第一次运算时,y++;此时y=1;x+=++y;时是在y=1的基础上再加1;所以x=2.
http://zhidao.baidu.com/question/44413947.html你看一下这个回答吧,关于逗号运算符,这里不是一个表达式,而是两个。
在真实的C标准中像y++和++y这样的运算是未定义的,和编译器有关系。
但一般认为y++会先使用y值再自加1,++y会先加1再使用y值;
第一次运算时,y++;此时y=1;
x+=++y;时是在y=1的基础上再加1;
所以x=2;
在真实的工作环境中是不允许出现类似x
=
++y;或x
=
y++;这种形式的赋值的;
因为当编译环境不同时可能会出现不可预料的问题。