赋值语句从右到左依次计算
所以a+=a-=a*=a;
相当于:
a*=a;
a-=a;
a+=a;
所以相当于:
a=a*a==12*12==144;
a=a-a==144-144==0;
a=a+a==0+0==0;
最后a的值是0
从右向左,a*=a是144,a-=a 就是144-144为0,最后a+=a 就是0了
我室友说的
+=,-=,*=都是从右到左的运算符,那么根据这个加上括号就好办了
a+=(a-=(a*=a))结果为0
a*=a结果a=144
a-=a结果肯定是0了
a+=a一样是0
让你看下语句编译成汇编你就更好理解了
int a=12;//a赋值12
a+=a-=a*=a;//a*=a;a值为12*12=144;a-=144为a为0
所以值为0