为什么这段代码会产生8?
#include <iostream>
using namespace std ;
void myFunction(int i)
{
i = i + 2 + ++i;
cout<<i<<endl;
}
void main ()
{
int i = 2;
myFunction(i);
cin>> i;
}
Run Code Online (Sandbox Code Playgroud)
我认为结果应该是7而不是8 ...我正在使用Visual Studio 2008
Dij*_*tra 18
此表达式右侧的术语评估顺序
i = i + 2 + ++i;
Run Code Online (Sandbox Code Playgroud)
未定义.即它们可以以任何顺序发生.在这种情况下,编译器选择在评估i(第一项)之前首先递增i(++ i,第三项),这导致3 + 2 + 3.