【发布时间】:2011-11-23 20:42:59
【问题描述】:
我已经使用 C++ 很多年了,但我才意识到增量分配的一些问题。
我有这个sn-p
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 variable-assignment