小编Mal*_*lan的帖子

为什么是“i = ++i;” 和“i = ++i + 2;” 未定义的行为?

我找到了这篇文章:https : //en.cppreference.com/w/cpp/language/eval_order

我不知道为什么i = ++i;并且i = ++i + 2;是未定义的行为。

第一个例子:

int i = 5;

i = ++i;
Run Code Online (Sandbox Code Playgroud)

结果还是6。

如果i = ++i;被声明为未定义行为,那么也i = ++j;应该声明为未定义行为(因为赋值可以在增量之前发生?)。

第二个例子:

int i = 5;

i = ++i + 2;
Run Code Online (Sandbox Code Playgroud)

结果还是8。

如果i = ++i + 2;被声明为未定义行为,那么也i = ++j + 2;应该被声明为未定义行为(因为赋值可以在增量和求和之前发生)?

c operator-precedence undefined-behavior

2
推荐指数
1
解决办法
94
查看次数