2

先生から質問がありました (С++): 次の後に画面に表示される内容:

{
     int a = 2;
     cout << a << endl;
     {   
         int a=7;
         cout << a << endl;
     }
     cout << ++a << endl;
}

そして、何か複雑なことがあるのだろうか?それとも識別子aを複製しただけですか?または、そのような中括弧はどこにでも特定の効果をもたらし、エラーなしで進む可能性がありますか? 変数が外部に存在しない場合の関数のように。ブレースのブロックの外側にあるのでしょうか?これらのブレースは何のためにありますか?

4

2 に答える 2

6

この場合の中括弧は、変数の範囲を区切ります。内側の中括弧は基本的に新しい変数を宣言しa、外側の変数を隠します。

と同等です

{
   int a=2;
   cout<<a<<endl;
   {   
     int b=7; cout<<b<<endl;
   }
   cout<<++a<<endl;
}

ただし、aスコープ内では使用できません。

出力は次のようになります

2
7
3
于 2012-08-15T22:37:31.550 に答える
1

中括弧は新しいスコープを形成します。a内側のブロックの変数はa、外側のブロックの変数とは異なります。

于 2012-08-15T22:37:45.137 に答える