是否有任何人知道這是否有效不是在C++
int a = 0;
a = a++;
有人告訴我,這會在C++標準下產生未知的行爲,有誰知道爲什麼,以及C++標準中的哪些地方?謝謝!
是否有任何人知道這是否有效不是在C++
int a = 0;
a = a++;
有人告訴我,這會在C++標準下產生未知的行爲,有誰知道爲什麼,以及C++標準中的哪些地方?謝謝!
技術上的原因是,你不應該在序列點之間兩次修改相同的變量(直接或者由於副作用)。
這是一個SO question與良好的答案,進一步澄清這一點,並描述一般序列點。
我不知道有關標準本身(其可能是從C標準中引用無論如何),但在這裏,你可以閱讀一下:
http://www.research.att.com/~bs/bs_faq2.html#evaluation-order
這是已經注意到該行爲是未定義的。但無論你想要做什麼,肯定有更好更清晰的方式來做到這一點。在這種情況下,一個簡單的'a ++;'做你想要的,沒有含糊不清或者未定義行爲的風險。 –