#include <iostream>
int a=5;
using namespace std;
int fun()
{
a=17;
return 3;
}
int main()
{
a=a+fun();
cout<<a;
return 0;
}
执行开始时会有什么流程? 我已经读过代码执行从main开始。如果是这种情况,答案必须是8.但是在c ++编译器中执行此代码的答案是20.
答案 0 :(得分:1)
在解释表达式a + fun()
时,编译器可以选择在执行a
调用之前获取fun()
值,或者在获取 >它。因此,从a
获取的值可以是在5
内分配的13
或fun()
的初始值,因此您可以获得5+3
或{{ 1}}。每个都是允许的。