C语言中赋值计算的问题:定义int a=10,则表达式a+=a-=a*=a的值是多少?怎么算出来的?

如题所述

a+=a-=a*=a展开后应该为:a=a+a=a-a=a*a;
首先计算a=a*a,结果a=100,接着计算a=a-a,结果a=0,再计算a=a+a,结果还是0。
OK,就是这样计算的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-03-05
为0,由于a++为先执行运算后自加,所以此时的表达式可以看成是a=0+0,
这时又涉及到运算符优先级问题,=号为最低等级,所以先执行了a++,但是这个a++并不会影响最后的结果了,因为上面的表达式已经出来了,最终a又会被赋值成0+0的结果,所以还是0
第2个回答  2011-03-02
从右向左,依次计算

a=a*a = 100
a=a-a = 0
a=a+a = 0

答案是0
第3个回答  2011-03-02
a+=a-=a*=a;
先算右边
a=a*a;//a=100
a=a-a;//a=0;
a=a+a;//a=0;本回答被提问者采纳
第4个回答  2011-03-02
值为0.
自右向左算.
相似回答