[英]inner loop with same variable name as outer loop
假设以下简单代码:
for(int i=0; i < 1000; i++)
{
cout << "Outer i: " << i << endl;
for(int i=0; i < 12; i++)
{
cout << "Inner i:" << i << endl;
}
}
工作得很好。 使用的两个循环中的变量名相同,输出正常。
我是否理解这两个变量都是在堆栈上创建的,当外部循环进入新的内部循环时,会创建一个新的“命名空间”(可能是错误的名称......)? 但为什么会被覆盖? 如果我在内循环中为变量选择另一个名称,我也可以从外循环访问i
。
我有点困惑。
“命名空间”有点接近......但更多的是关于范围 。 内在的我隐藏/压抑外在的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
}
你的理解是正确的。 该代码在技术上是有效的。 然而,这种做法存在许多问题,因此是一个坏主意。
每个for
循环都有一个与之关联的独立范围 。 在内部循环声明的变量阴影在外环声明的变量。 无法从内循环访问外部i
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.