c语言的表达式问题

来源:百度知道 编辑:UC知道 时间:2024/05/18 21:46:44
a=12;
问:a+=a-=a*=a;
这个答案为什么是0??

先算a*=a ,得到 a = 144
然后a-=144 所以a=a-a=144-144=0
a+=0,a=a+a=0
赋值运算都是从右往左算的,有括号先算括号里的,记住这点。
整个算式可以这么看a+=(a-=(a*=a))
计算错误,LS的quickreport 兄,就算我144写成132了你也不厚道,剽窃我劳动成果,哼哼~~

此处“=”为比较运算
因为这4个表达式肯定不相等,因此为false(0)

12*12=144呀,大佬!
赋值符,从右向左逐个赋值:
a *= a 即 a = a*a, a = 144;
a -= a 即 a = a-a, a = 0;
a += a 即 a = a+a,a = 0.

从右向左依次赋值,
楼上的二位说的是正确的~~~

来晚了,楼上两位说得都很详细.楼主应该明白+=,-=,*=都是复合赋值运算符.优先级都是相等的,但是它们的结合方向是自右边向左边的,所以要从右边往左边计算并赋值.