C语言 设有语句int a=4;则执行了语句a+=a-=a*a后,变量a的值是多少?

RT
标题打的有点不清楚
a+=a-=a*a

答案:-24

1、a = 4,先算a * a,表达式的值为16。
2、+和-同一优先级,因为是复合赋值运算结合性从右向左进行,所以此时算
a -= 16 (a *a 表达式的值是16)
相当于
a = a - 16;
此时a=-12
3、最后算:
a+ = -12(a-=a*a表达式的值是-12)。
相当于
a = a + (-12);
因为a = -12,所以最后的值是-24。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-09-16
又来讨论这类没有意义的语句.告诉你,这样地写语句在标准C中是没有定义的.
虽然在编译器能得出结果,但是由于标准C没有明确定义,那么编译器可根据自己来作出一个规则.所以不同编译器会得出不同的结果.
请你看我回答别人的一个问题就知道了.

参考资料:http://zhidao.baidu.com/question/184307242.html

第2个回答  2010-09-16
等于号是从右向左计算的……
不过,谁这么蛋疼,用这种表达式?本回答被提问者采纳
相似回答