这个(a+=a-+a*a)如何计算?

#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。