有關於C.不確定的行爲其中之一是(略有修改)'a [i] = i''總是會導致明確的行爲?
提出here幾個有趣的問題是否未定義的行爲下面這段代碼的結果?
int i = 0, *a = &i; // Line 1 a[i] = i + 1; // Line 2
由於沒有具體答案的問題出現的這一部分,我想知道在C++中的行爲,我在這裏再次提高了。
規則#2從Undefined Behavior and Sequence Points說
此外,該值是前一個值是唯一的訪問,以確定該值將被存儲
在上面的例子中
顯然被訪問兩次:a[i]
(lhs)和i
(rhs),並且它們中只有一個(rhs)確定要存儲的值。
第2行是否違反上述規則並導致C++ 03中的未定義行爲?
有一些混亂至於i
是否在第2行修改?
+ 1對於C + +03和C++ 11的答案。 – 2012-03-04 17:05:58