这个C代码是否会产生“未定义的行为”?

时间:2011-05-14 02:49:36

标签: c undefined-behavior

我正在阅读有关C和C ++中未定义行为的有趣文章 A Guide to Undefined Behavior in C and C++, Part 1 。我经常在我的代码中执行以下操作:

int i = 10;
i = (++i) % 7;

这是否会产生未定义的行为?在x86上?臂?也许这取决于编译器?

2 个答案:

答案 0 :(得分:8)

这是未定义的行为,因为i在没有插入序列点的情况下被多次修改。

它仅取决于编译器,因为对代码的作用没有要求,因此每个编译器都可以做一些不同的事情。要清楚 - 只是因为即使你得到的结果似乎有意义(有时),代码也是一个错误。

答案 1 :(得分:1)