成都飞科伦坡:帮我解释一个C程序的题吧

来源:百度文库 编辑:中科新闻网 时间:2024/04/30 14:14:27
设a=12
求a+=a-=a*=a
答案是0
我搞不懂,最好多解释一下,尤其是说说计算的先后问题
谢谢了哈

由C语言的运算规则可知以上程序段可化为:
a=12;
a=a*a;(a=144)
a=a-a;(a=0)
a=a+a;(a=0)
所以结果为0!

等价于: a+=(a-=(a*=(a)))

=> a = a + (a = a - ( a = a * a))

然后你把12代到最里面得a 从里面算出来看看呵呵

关键是那个“a-”,由于“=”运算符的结合方向是从右向左,所以算到“a-”的时候,右边不论是什么值,实际上执行的是a=a-a,自然就成0了

=运算符的结合方向是从右向左,所以应该按照上面的解答