【发布时间】:2020-05-21 11:27:03
【问题描述】:
我发现这篇文章:https://en.cppreference.com/w/cpp/language/eval_order
我不知道为什么 i = ++i; 和 i = ++i + 2; 是未定义的行为。
第一个例子:
int i = 5;
i = ++i;
结果仍然是 6。
如果i = ++i; 被声明为未定义行为,那么i = ++j; 也应该被声明为未定义行为(因为赋值可以在递增之前发生?)。
第二个例子:
int i = 5;
i = ++i + 2;
结果仍然是 8。
如果i = ++i + 2; 被声明为未定义行为,那么i = ++j + 2; 也应该被声明为未定义行为(因为赋值可以在递增和求和之前发生)?
【问题讨论】:
标签: c undefined-behavior operator-precedence