在 C++17 中,i++ + i++ 的计算结果是什么?
What will i++ + i++ evaluate to in C++17?
看起来我们正在为 C++ 开发一种全新的 "interview questions"(实际上我希望不是)。
已知在 C++17 之前是未定义的行为,但是从 C++ 开始它会是明确定义的 17 岁以后?
由于目前似乎没有实现此 C++17 修改的编译器,谁能解释一下,根据表达式求值规则,x
的值将在以下代码?
int i = 0;
int x = i++ + i++;
Alisdair Meredith 在他的 CppCon 2016 演讲中提到了这个例子 here,但我并不完全清楚 x
的最终值是多少(尽管他的意思似乎是至少为 1).
显然,在这种情况下,i
本身将在表达式末尾为 2。
P0145R3 (PDF) 不会改变所有表达式的求值顺序。它只影响少数运营商。二进制加法不在该列表中。
因此上面的代码没有定义。
看起来我们正在为 C++ 开发一种全新的 "interview questions"(实际上我希望不是)。
已知在 C++17 之前是未定义的行为,但是从 C++ 开始它会是明确定义的 17 岁以后?
由于目前似乎没有实现此 C++17 修改的编译器,谁能解释一下,根据表达式求值规则,x
的值将在以下代码?
int i = 0;
int x = i++ + i++;
Alisdair Meredith 在他的 CppCon 2016 演讲中提到了这个例子 here,但我并不完全清楚 x
的最终值是多少(尽管他的意思似乎是至少为 1).
显然,在这种情况下,i
本身将在表达式末尾为 2。
P0145R3 (PDF) 不会改变所有表达式的求值顺序。它只影响少数运营商。二进制加法不在该列表中。
因此上面的代码没有定义。