c语言 复合赋值运算符的问题,请指教!

a+=a*=a/=a-6 请问这是何意啊?

说的越详细越好,谢谢!

第一步:a=a/(a-6),a的值传递给第二步进行下一步计算
第二步:a=a*a,a的值传递给第三步进行下一步计算
第三步:a=a+a,a的最终结果在这里

记住两句话:
1、=赋值号,自右向左进行;
2、a+=1相当于a=a+1。这个a/=a-6先把a-6看成一个数,a/=1不就是a=a/1嘛;
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-30
一步一步展开:
第一步展开为 a = a + (a*=a/=a-6)
第二部展开为 a = a + (a= a * (a/=a-6))
第三步展开为 a = a + (a= a * (a = a / (a-6)))
假如a=8,先计算里面的a = a / (a-6) , 计算后a = 4;
然后计算 (a= a * (a = a / (a-6))) 计算后 a = 16;
最后计算a = a + (a= a * (a = a / (a-6))) 计算后 a = 32;
这个从右往左计算,往外面的一层使用的 a 的值是新计算出来的。