a+=a-=a*=a a=12 答案是什么呀>?

来源:百度知道 编辑:UC知道 时间:2024/05/26 19:23:33
谢谢 C语言算法

a+=a-=a*=a
先算 a*=a 得出a=12*12=144
算a-=a 得出a=12-144=-132
算a+=a得出 a=12+(-132)=-120

a += a -= a *= a;等价于{a +=[ a -= (a *= a)]};
赋值运算符: 自右至左

1:a *= a的运算,相当于a = a * a,a的值为12*12=144;
2:a -= a 的运算,相当于a = a - 144,a的值为144-144=0;
3:a +=a 的运算,相当于a = a + 0, a的值为0+0=0;
所以此表达式结果为0

虽然我相信结果是-120;可是实际的运行结果却是 0.

wd@0056bb5982bc477 ~/c
$ cat simple3.c
main(){ int a=12; a+=a-=a*=a; printf("%d\n",a);}

wd@0056bb5982bc477 ~/c
$ gcc -o simple3.exe simple3.c

wd@0056bb5982bc477 ~/c
$ ./simple3.exe
0

方向是从右向左288

不同意 烟花飘飘
a+=a-=a*=a
方向从右至左
先算 a*=a 得出a=12*12=144 ,此时a已经等于144
算a-=a 得出a=144-144=0,此时a已经等于0
算a+=a得出 a=0+0=0
结果答案是0

方向从右至左
一点一点算就知道结果应该是0了
算a*=a 得出a=12*12=144 ,此时a已经等于144
算a-=a 得出a=144-144=0,此时a已经等于0
算a+=a得出 a=0+0=0