需要明确以下计划,

时间:2013-03-30 11:41:01

标签: c++

以下程序会打印什么?

#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

请帮助我理解。

3 个答案:

答案 0 :(得分:7)

即使int x不是静态的,它仍然是全局变量,超出mainmain1的范围。

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

答案 1 :(得分:0)

由于x对于main1和main都是全局可见的,因此无论静态是否存在都无法区分。

答案 2 :(得分:0)

static关键字在C中有多种含义,具体取决于您使用它的位置。阅读此http://msdn.microsoft.com/en-us/library/s1sb61xd(v=vs.80).aspx