#include<stdio.h>
void main()
{ int a=3;
printf("%d\n",(a+=a-=a*a));
}
结果是-12。原因是先算axa(结果为9,此时a的值没变,还是3);然后算 a-=axa,等效于 a = a - 9;(结果为-6,因为赋值符号,此时a的值为-6,发生了改变);最后算a = a + a ,结果为-12
等价于
a-=a*a;
a+=a;
继续等价于
a=a-a*a; 3-3*3=-6
a=a+a; -6+(-6)=12
可分解为两步:
1.a-=axa相当于a=a-axa。
2.a+=a相当于a=a+a。
a初始化为3:
1.a=a-axa=3-3x3=-6。
2.a=a+a=-6+(-6)=-12。
所以最后结果就是-12。