若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后a的值为答案是-12,标答里说a=a+(a-(a*a)),请问a+中的a值为什么变成-6

问题描述:

若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后a的值为
答案是-12,标答里说a=a+(a-(a*a)),请问a+中的a值为什么变成-6

a+=a-=a*a;
复合赋值表达式,从右到左运行,可以分拆成:
a-=a*a;
a+=a;
a的原值为3
a-=a*a;
相当于
a=a-a*a=3-3*3=-6;
再运行
a+=a;
自然就成了-12