有关于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