大括号外的重复变量

时间:2012-08-15 22:35:23

标签: c++

我的老师给了我一个问题(С++): 在以下情况下将在屏幕上打印的内容:

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

我想知道有什么复杂的东西吗?或者只是重复的标识符?或者这样的大括号到处都有任何特定的效果,它可能没有错误?就像函数中的变量不存在于外部时一样。它可以在支架块之外吗?这些大括号是什么?

2 个答案:

答案 0 :(得分:6)

在这种情况下,大括号界定了变量的范围。内括号基本上声明了一个新变量a,隐藏了外部变量。

相当于

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

,但a在内部范围内不可用。

输出为

2
7
3

答案 1 :(得分:1)

大括号形成一个新的范围。内部块中的变量a是与外部块中的a不同的变量。