C语言赋值问题!急

来源:百度知道 编辑:UC知道 时间:2024/06/28 22:50:03
能不能告诉我 a+=a-=a*=a 这个赋值表达式为什么最后运算结果是0!
请分成步骤说明一下!!谢谢

a+=a-=a*=a
a+=a-=a=a*a
a+=a=a-a
a+=a=0
a=a+a=0上楼说得没有错,这些只有考试才会考的,平时这种编码习惯完全就是致命的。

c语言中,赋值语句从右到左执行!!!
1. a *= a 表示 a = a*a 运行这之后现在的a等于老a的平方
2. a -= a 表示 a = a-a 运行这之后现在的a等于0
3. a += a 表示 a = a+a 因为第2步之后a已经为零,所以,0+0=0,故a=0!

不要把精力放在这些实际中没人去用的东西上,

有空多看看算法与数据结构

赋值语句是自右向左结合的,如果你只定义变量不给其赋值一般系统默认其为0。a*=a也就是a=a*a.故a=0以次类推可得结果

需要理解的是:复合赋值运算符运行后变量原有的值被改写为计算后的新值.
例如:
a=2;执行a+=1后a的值被刷新成 3,之后的运算就用3来计算了.
例如:
a=1;求a*=a+=2
赋值运算是自右向左进行的,所以上式可改为 a+=(a+=2) 先计算括号里的a+=2,a的值被刷新为3同时表达式a+=2的值也是3,即 a*=3,最后算出表达式的值是9,a的值被刷新成9.