c语言中有关复合运算符计算的问题

c语言中有关复合运算符计算的问题a=7时,运行 a+=a*=a/=a-6,输出a=56,求详细过程。

答案是98,不是56,分析如下
a+=a*=a/=a-6,展开如下
a=a+(a*=a/=a-6)
a=a+(a=a*(a/=a-6))
a=a+(a=a*(a=a/(a-6)))
a=a+(a=a*(a=a/1))
a=a+(a=a*(a=7))
a=a+(a=a*7) // 注意,此时a的值是7
a=a+(a=7*7)
a=a+(a=49)
a=a+49 // 注意此时a的值是49
a=49+49
a=98
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-08-27
由于复合运算符是右结合的,所以
a+=a*=a/=a-6
==a+=(a*=(a/=(a-6)))
==a+=(a*=(a/=1))
==a+=(a*=a)
==49+49
==98
我不清楚你的答案56是怎么来的!本回答被提问者和网友采纳