设有语句int a=3;则执行了语句a+=a-=a*a;后,变量a的值是(  ) A) 3 B) 0 C) 9 D) -12

2024-11-15 17:57:46
推荐回答(5个)
回答1:

选项为D。
解析:根据算术运算符的优先级,应该是先算乘法,即a*a=3*3=9,于是该式子变为a+=a-=9,注意此时a值依然为3。再根据从右向左的运算顺序,将将上式一分为二:a+= | a-=9,先计算右一项,a=a-9=3-9=-6。这样,a的值变成了-6,再计算左半部分a=a+(-6)=-6+(-6)=-12。故选项为D。
以上结果,本人已通过程序运行调试,绝对没有问题。

回答2:

D) -12
--------
等价 a += (a -= (a*a))
自右向左算
a*a = 9 , a = 3不变
a-= 9, a = a-9, a=-6
a+=-6, a = a+(-6), a=-12

回答3:

D: -12

相当于 a+=(a-=a*a);

a-= a*a; 相当于a = a - a*a; 所以a为-6

a+=a; 相当于a = a+a; 此时传入的a是上一步计算的结果-6, 所以最后a 为-12

回答4:

D
=是右匹配。
a=3;
执行a-=a*a,即a=3-9,a=-6;
a+=-6;即a=-6+(-6);
所以a=-12;

我用vc验证过了,是-12

回答5:

D
从右向左执行。
a-=a*a过后a=-6。
再执行前面的a+,则a=-12