复合赋值运算,其中a=3,求a+=a-=a*a的值是多少
//赋值运算从右向左执行
/**
*
* a*a = 9;
* a-=a*a;
* a-=9;
* a+=a-
* a-=9
* a = a-9 结果为-6
* 所以得 a+ = -6
* a = a + (-6);
* 结果得 a=-3
*/
话不多说
上图
从右往左计算并附值
第一步:a-a*a=a=-6
第二步:a+a=a=-12
a+=a == a=a+a
a-=b == a=a-b
从左至右计算,从右至左附值
我编译运行是-12呀
复合运算符左边必须是变量,右边的表达式计算完成后才参与复合赋值运算。语言运算符的优先级,结合
方向为从右到左.所以答案为12
也许-3吧。