2011-10-19 27 views
2

可能重複:
Undefined Behavior and Sequence PointsC++無效轉讓

是否有任何人知道這是否有效不是在C++

int a = 0; 
a = a++; 

有人告訴我,這會在C++標準下產生未知的行爲,有誰知道爲什麼,以及C++標準中的哪些地方?謝謝!

+1

這是已經注意到該行爲是未定義的。但無論你想要做什麼,肯定有更好更清晰的方式來做到這一點。在這種情況下,一個簡單的'a ++;'做你想要的,沒有含糊不清或者未定義行爲的風險。 –

回答

1

技術上的原因是,你不應該在序列點之間兩次修改相同的變量(直接或者由於副作用)。

這是一個SO question與良好的答案,進一步澄清這一點,並描述一般序列點。