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