C语言另一道题 复合赋值

来源:百度知道 编辑:UC知道 时间:2024/05/04 09:14:20
若有定义语句:int m=5,y=2;则执行表达式y+=y-=m*=y后的y值是______.
怎么个执行过程啊?
结果是-16!!
请帮忙给分析一下吧。

赋值语句是从右向左的。
m=m*y-------m=10
y=y-m----------y=2-10=-8
y=y+y---------y=(-8)+(-8)=-16
应该懂了吧?

VC和GCC里完全等价
m = m * y;
y = y - m;
y = y + y;

从最右端的赋值号开始:
m=m*y(m=5*2=10,y=2)
y=y-m(m=10,y=2-10=-8)
y=y+y(m=10,y=(-8)+(-8)=-16)