0

下面的程序会打印什么?

#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

请帮我理解。

4

3 回答 3

7

即使int x不是静态的,它仍然是一个全局main变量,在and的范围之外main1

因此,无论您从该文件中的任何位置对 x 所做的任何更改都将永久更改它。

于 2013-03-30T11:43:27.237 回答
0

由于 x 对 main1 和 main 都是全局可见的,因此 static 是否存在都没有区别。

于 2013-03-31T11:32:50.373 回答
0

the static keyword has several meanings in C depending on where yoi use it. Read this http://msdn.microsoft.com/en-us/library/s1sb61xd(v=vs.80).aspx

于 2013-03-31T17:15:33.367 回答