【发布时间】:2013-11-07 19:17:04
【问题描述】:
我不知道在哪里搜索这个(可能是标准但仍然不知道要搜索什么),所以我会在这里问这个。
如果在某些执行中array[i2] 将设置为array[i],其中i2 恰好等于i,那么这是定义的行为吗?
我正在使用 C99(使用 gcc 4.8.1),使用 gcc -S 查看程序集,我没有发现任何可疑之处。
【问题讨论】:
-
编译器甚至可以优化它。
-
它不会,因为它取决于运行时执行。这就是我注意到“在某些执行中”的原因。它实际上更像是 array[idx] = array[i],其中 idx 恰好等于 i。
-
@Silverrocker:指定你的意思是什么依赖。
-
我已更新问题以澄清情况。
-
这可能与“int i, j; j = i”相同。读 i 是未定义的,所以你可以说整个语句是未定义的。对于之前未分配的数组元素也是如此。
标签: c gcc standards c99 undefined-behavior