运算顺序是从右到左。
a-=a*a; //这时 a=3-9=-6
a+=-6;// a=-6 + -6 =-12
其实这里涉及一个寄存器复用问题,在连续等号操作中,a占用的寄存器在中途被更改了,因此才有-6+-6 ,而不是3+-6
从右往左运算a*a=3×3=9此时a=3,a-运算a=a-9即a=3-9=-6此时a=-6,再进行a+运算a=a+(-6)即a=-6-6=-12
从右到左 a-=a*a 就是a=a-a*a 算出a=-6 a+=a 就是a=a+a 就是-6+(-6)=-12
自右向左运算
那么可以拆分为:
首先a*a=9;
a-=a*a,实际就是a=3-9=-6;
a+=a,实际就是a=-6+(-6)=-12