我有一個人聲稱該行沒有被覆蓋的C++標準:數組[i] = i ++是否覆蓋C++標準?
int i(1);
array_of_int[i] = i++;
上述人士表示,這將指派1
但我們無法知道它是否會在array_of_int[1]
或array_of_int[2]
雖然Visual Studio和最的編譯器將在array_of_int[1]
。
他是否正確?
我有一個人聲稱該行沒有被覆蓋的C++標準:數組[i] = i ++是否覆蓋C++標準?
int i(1);
array_of_int[i] = i++;
上述人士表示,這將指派1
但我們無法知道它是否會在array_of_int[1]
或array_of_int[2]
雖然Visual Studio和最的編譯器將在array_of_int[1]
。
他是否正確?
這是未定義的行爲。從字面上看,任何行爲都是合法的。
,禁止該行的代碼的通道是這樣的:
之前和下一序列點的對象應具有其存儲的值由表達式的評估修飾的至多一次之間。此外,前一個值是隻讀以確定該值將被存儲
有a[i]
和i++
和a[i]
讀至i
之間沒有序列點不用於確定什麼值被存儲在目的i
by i++
。
據我所知,這種行爲是由編譯器決定的,並沒有在C++標準中明確提出 – CatShoes
可能的重複:http://stackoverflow.com/questions/949433/could-anyone-explain-these-undefined-behavior -iiiii等 - 這在其中一個答案中已經涵蓋。 – Mat
請關閉或刪除我的問題,如果它是一個愚蠢的,我試圖找到它被問到,但沒有用正確的關鍵字制定我的搜索。 – BlueTrin