求C语言语句运行结果 a+=a-=a*=a;

a+=a-=a*=a;
谁能告诉我上面语句详细的运算过程和最终结果
格式如A=2*5+3/2

a+=a-=a*=a;
相当于三步:
a=a*a;
a=a-a;//a肯定等于0了
a=a+a;//a还是等于0
结果当然是0啦
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-07-11
运算结果等于0
此题结合性为右结合,也就是说从右至左来计算的,先算a*a,后再计算a-a,最后计算a+a;从结果来分析,第一次算完乘法后,再计算减法时相同的数相减结果成0了,最后加法时只有0去加和,故结果为0.
第2个回答  2008-07-11
a+=a-=a*=a; 不管a一开始等于多少,a最后都等于0。

这个表达式是从右往左执行的。
设a一开始等于2;
a*= a 这条语句执行后a = 4;
然后 a-=a 就变为a = 4 - 4 = 0;
最后再执行 a+=a , a = 0 + 0 =0;

关键在中间a-=a,这条赋值表达式执行完毕a=0,所以不管a一开始为多少,这个表达式结果始终为0。
第3个回答  2008-07-11
0
逆向:
a=a*a;
然后:
a=a-a;
无论a为何值,到这步一定为0
最终:
a=0+0=0;
第4个回答  2008-07-11
a=a*a
a=a-a*a
a=a+(a-a*a)=2a-a*a
第5个回答  2008-07-11
先a*=a,此时a值为a*a;
再计算a-=a,即a*a=a*a-a*a,结果为0;
再计算a+=a,即a*a=a*a+a*a。由于a*a的值为0,故表达式值为0。
相似回答