c语言 若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是 A) -3 B) 9 C) -12 D) 6

问题描述:

c语言 若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是 A) -3 B) 9 C) -12 D) 6
根据+、-、*、=的优先级和结合性,是不是应该是这样一个运算过程:
=(a+=a-=9)
=((a=a+a)-=9) /*因为a初值为3,这步运算完以后a为6*/
=(a-=9)
=(a=a-9)
=(a=-3)
由此算得a=-3,选A,

先算:a-=a*a,其等价于
a=a-a*a
=3-3*3
=-6
再算a+=-6,其等价于
a=a+(-6)
=(-6)+(-6)
=-12+=-=不是加,减运行,是赋值运算。