我已经使用 C++ 多年,但刚刚意识到增量赋值有些可疑。
我有这个片段
a = 4;
b = 2;
c = 0;
c = c + a > b; printf("a: %d\tb: %d\tc: %d\n",a,b,c);
c = c + a > b; printf("a: %d\tb: %d\tc: %d\n",a,b,c);
c += a < b; printf("a: %d\tb: %d\tc: %d\n",a,b,c);
c += a > b; printf("a: %d\tb: %d\tc: %d\n",a,b,c);
c += a > b; printf("a: %d\tb: %d\tc: %d\n",a,b,c);
结果是
a: 4 b: 2 c: 1
a: 4 b: 2 c: 1
a: 4 b: 2 c: 1
a: 4 b: 2 c: 2
a: 4 b: 2 c: 3
如果您注意到,前两行是相同的。或者 'c' 在第一个 c = c + a > b 之后没有得到更新; 但是,当我们使用增量赋值 +=
时,c 的值会更新有什么想法吗?
最佳答案
<
优先级低于 +
.
c = c + a > b;
被解释为 c = (c + a) > b;
就是这样,不需要什么原因,但如果有的话,可能是人们更多地比较算术表达式,而不是在算术表达式中使用比较的结果..
关于c - 增量分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7532661/