内部循环与外部循环具有相同的变量名称

Ste*_*fan 4 c++ nested-loops

假设以下简单代码:

for(int i=0; i < 1000; i++)
{
  cout << "Outer i: " << i << endl;
  for(int i=0; i < 12; i++)
  {
    cout << "Inner i:" << i << endl;
  }
}
Run Code Online (Sandbox Code Playgroud)

工作得很好.使用的两个循环中的变量名相同,输出正常.

我是否理解这两个变量都是在堆栈上创建的,当外部循环进入新的内部循环时,会创建一个新的"命名空间"(可能是错误的名称......)?但为什么会被覆盖?如果我在内部循环中为变量选择另一个名称,我也可以访问 i外部循环.

我有点困惑.

Lew*_*rin 6

"命名空间"有点接近......但更多的是关于范围.内在的我隐藏/压抑外在的i.你可以想到另一个例子:

{ 
 int i=0; //outer scope i.
 {
   int i =0; //this hides the outer scope i.. I can't use outer i here

 }
  i =1 ; //inner i is out of scope.. outer i is set to 1
}
Run Code Online (Sandbox Code Playgroud)