以下程序会打印什么?
#include <iostream>
using namespace std;
static int x = 10;
void main1()
{
cout << x << endl;
x = x + 1;
}
int main()
{
main1();
main1();
cout << x << endl;
}
根据我的理解,上面的程序我们使用了静态变量,因此x
保留了最后一个初始化变量。所以输出将是
10
11
12
但如果我们删除静态,我们应该
10
10
10
但即使在删除静态之后,我也会得到以下输出。
10
11
12
请帮助我理解。
答案 0 :(得分:7)
即使int x
不是静态的,它仍然是全局变量,超出main
和main1
的范围。
因此,无论您对此文件中的任何位置的x所做的更改都会永久更改它。
答案 1 :(得分:0)
由于x对于main1和main都是全局可见的,因此无论静态是否存在都无法区分。
答案 2 :(得分:0)
static关键字在C中有多种含义,具体取决于您使用它的位置。阅读此http://msdn.microsoft.com/en-us/library/s1sb61xd(v=vs.80).aspx