Xia*_*ong 3 c++ global-variables
#include <iostream>
using namespace std;
int a = 8;
int g()
{
a++;
return a - 1;
}
int f()
{
a++;
return a;
}
int main()
{
cout << g() << " " << f() << " " << g() + f() << endl;
system("PAUSE");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出为"11 11 18"
小智 9
函数的评估顺序在C++中未指定.在代码中:
cout << g() << " " << f() << " " << g() + f() << endl;
Run Code Online (Sandbox Code Playgroud)
编译器可以发出代码来调用f(),f(),g(),g()然后添加结果.或者它可以做其他事情.
这与使用cout,BTW没有什么关系 - 如果你编写这样的代码:
x = a() + b() * c();
Run Code Online (Sandbox Code Playgroud)
无法保证调用a,b和c的顺序.这是全局变量为坏事的众多原因之一 - 您通常无法预测将如何调用更改它们的函数.