C语言中a=2,a-=a*=3;为什么结果是0

Python013

C语言中a=2,a-=a*=3;为什么结果是0,第1张

乘等也是个赋值操作,顺序就是楼上老哥说的自右向左,毕竟得先得到右边的值才能计算呀;

加上括号后:a-=(a*=3);

再分解下:第一步a*=3,看上去有点唬人,其实就是a=a+3,而第二步a-=a,为a=a-a;

先算a*=3;//a=2*3,a=6,这一步后a已经不再是2,而是6

再算a-=a;//a=6-6 ,所以a=0

因为复合赋值运算符的效率比a=a+b好,所以这种a=a+b的情况一般就写成a+=b;

不信你拿出笔和纸,写写a=a+b和a+=b,第一个写了两次a,而第二个只写了一次,计算机也一样,a=a+b计算了两次a,a+=b只计算了一次a;

c语言运算符是从右往左运算的

先算的是!a(值为0),然后算的是a==0(值为0),最后算的是b=0(赋值运算)

于是最后b的值为0

望采纳,谢谢