关于C语言中‘+=’运算符计算结果的疑问求助
问题分析:为何
b+=的结果是6而非5 我们一步步拆解代码的执行过程,就能找到问题所在:
- 初始变量:
int a=4, i=8; int b; - 执行
b=++a;:这是前置自增运算符,会先将a的值加1(从4变成5),再把新的a值赋值给b。此时b=5,第一个printf输出5。 - 执行
b+=a-i/2;:- 按运算符优先级,先计算除法:
i/2 = 8/2 = 4 - 此时
a的值已经是5(因为之前的++a),所以计算a - 4 = 5 - 4 = 1 b+=1等价于b = b + 1,也就是5 + 1 = 6,因此第二个printf输出6
- 按运算符优先级,先计算除法:
你之前的计算错误在于忽略了++a对a值的修改,仍然用初始的a=4来计算,才会得出右侧结果为0的结论。
内容的提问来源于stack exchange,提问作者ivan pasquini
相关产品推荐
相关产品推荐

