#includevoid main() { int a = 12; a+=a-=a*=a; printf("%d",a); }
看完代码,之所以说它简单是因为它很友好,第一思路就是直接从左往右带数字进去推就行了,当然这也恰好可以得出最后的结果:0。另一种思路呢就是展开
#includevoid main() { int a = 12; // a+=a-=a*=a; a+=a; a-=a; a*=a; printf("%d",a); }
也是可以得到最后的结果:0的
再看看另一串"简单"的代码#includevoid main() { int a = 12; a+=a-= a*a; printf("%d",a); }
这俩代码很相似,就因为一个乘号位置的区别导致最后运行的结果也是不一样的,但都一样"简单";
那这一代码的思路是什么呢?#includevoid main() { int a = 12; a+=a-= a*a; // a -= a*a ====> a = a - 144 =====> a += a ====> -264 printf("%d",a); }
这题我的思路:带入式子从右往左开始算
a*a = 12 *12 =144 =====> a -= 144 ( a = a-144 ) [a=12-144=-132]
=====> a += a (a = a+a) [a=-132+(-132)=-264],最后得-264



