提问人:ivan pasquini 提问时间:3/27/2023 最后编辑:ikegamiivan pasquini 更新时间:3/27/2023 访问量:82
c中'+='的用法
Usage of '+=' in c
问:
我不明白为什么在这段代码中,“b+=”返回 6 而不是 5。运算符 '+=' 右端的运算应为 0。
- I/2 = 4
- a-4= 0
所以运算符 '+=' 应该只加:0。
#include<stdio.h>
int main(){
int a=4, i=8;
int b;
b=++a;
printf("%i\n",b);
b+=a-i/2;
printf("%i\n",b);
}
仅使用sintax理论
答:
1赞
Frédéric LOYER
3/27/2023
#1
执行 时,a 递增。其值变为 5。然后,然后是 1。b=++a;
a-i/2
5-8/2
4赞
Vlad from Moscow
3/27/2023
#2
在此声明之后
b=++a;
b
并且将等于由于前缀增量运算符。a
5
++
来自 C 标准(6.5.3.1 前缀递增和递减运算符)
2 前缀 ++ 运算符的操作数值递增。 结果是递增后操作数的新值。这 表达式 ++E 等价于 (E+=1)
所以在这个复合赋值语句中
b+=a-i/2;
可以像这样重写
b = b + a - i/2;
你有
b = 5 + 5 - 4
因此,您拥有的 等于 .b
6
如果将变量初始化为零,则可以得到预期的结果b
int b = 0;
以及是否删除此语句
b=++a;
评论
++a
=+
b=++a
b = ++a
b+=a-i/2
b += a - i / 2
b = b + (a - (i / 2))
a