我一直在使用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的值會更新。+ =
有什麼想法?
你有什麼想象應該發生?一切都完全如此。 –
這屬於「醜陋」代碼:「>」運算符不是算術運算符,因此不應在算術語句或表達式中使用。當布爾類型和操作符不可用時(古代語言),這是很久以前的黑客攻擊。 –