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は static ではありませんが、グローバル変数mainであり、およびのスコープ外ですmain1

したがって、このファイル内のどこからでも x を変更すると、永久に変更されます。

于 2013-03-30T11:43:27.237 に答える
0

static キーワードは、yoi が使用する場所に応じて、C でいくつかの意味を持ちます。これを読んでください http://msdn.microsoft.com/en-us/library/s1sb61xd(v=vs.80).aspx

于 2013-03-31T17:15:33.367 に答える
0

x は main1 と main の両方にグローバルに表示されるため、 static があるかどうかに関係なく違いはありません。

于 2013-03-31T11:32:50.373 に答える