我正在阅读有关C和C ++中未定义行为的有趣文章 A Guide to Undefined Behavior in C and C++, Part 1 。我经常在我的代码中执行以下操作:
int i = 10;
i = (++i) % 7;
这是否会产生未定义的行为?在x86上?臂?也许这取决于编译器?
答案 0 :(得分:8)
这是未定义的行为,因为i
在没有插入序列点的情况下被多次修改。
它仅取决于编译器,因为对代码的作用没有要求,因此每个编译器都可以做一些不同的事情。要清楚 - 只是因为即使你得到的结果似乎有意义(有时),代码也是一个错误。
答案 1 :(得分:1)