2013-03-30 63 views
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 

請幫我理解。

+2

你爲什麼認爲刪除'static'會有所作爲? –

+2

'x'變量是全局變量。 – soon

回答

7

即使int x也不是一成不變的,它仍然是一個全球變量的mainmain1範圍之外。

因此,無論您對此文件中任何位置的x所做的更改是否會永久更改。

+2

就像提醒一樣:​​當你移除'static'時唯一改變的就是該變量的鏈接器可見性。 –

+0

感謝每一個你的時間,在更多的例子後理解 – satish

0

由於x對於main1和main都是全局可見的,所以不論靜態是否存在都不會產生差異。