c语言问题:若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值为-12。请问怎么算的?

int a=3;a+=a-=a*a=-12
2025-04-15 09:41:49
推荐回答(4个)
回答1:

运算顺序是从右到左。
a-=a*a; //这时 a=3-9=-6
a+=-6;// a=-6 + -6 =-12
其实这里涉及一个寄存器复用问题,在连续等号操作中,a占用的寄存器在中途被更改了,因此才有-6+-6 ,而不是3+-6

回答2:

从右往左运算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

回答3:

从右到左 a-=a*a 就是a=a-a*a 算出a=-6 a+=a 就是a=a+a 就是-6+(-6)=-12

回答4:

自右向左运算
那么可以拆分为:
首先a*a=9;
a-=a*a,实际就是a=3-9=-6;
a+=a,实际就是a=-6+(-6)=-12