会C语言的 请进来帮我看下

来源:百度知道 编辑:UC知道 时间:2024/05/31 20:52:57
有道题:设int a=10 则执行语句a+=a-=a+a,后a的值为 -20 为什么啊?请写点步骤出来 谢谢了哈

回答如下:
该执行语句等价:a+=(a-=(a+a))
步骤1:执行a+a,的结果20,此时仍然a=10,没有被改变
步骤2;执行a-=20,即a=a-20,得结果-10,此时a=-10
步骤3:执行a+=a,即a=a+a,得结果-20,此时a=-20
看清楚了吗?

1.a+a得20这时a=10
2.a-=20得a=-10这时a=-10
3.a+=-10得a=-20

c语言赋值语句从右向左执行:
a -= a+a (也就是a = a-(a+a)) a = 10-20 = -10
a += a (也就是a = a+a) a = -10+(-10) = -20

a+=a-=a+a
第一步计算a+a,此时a为10第一步完成后表达式为a+=a-=20 ,(这时候a还是等于10)
第二步计算a-=20,即a=a-20,即a=-10,第二步完后表达式为a+=a,这是a=-10
第三步计算a+=a,即a=a+a,即a=-20

嗯.