为什么在嵌套的FOR循环中使用相同的count变量名称有效?

M P*_*rry 12 c++ scoping

为什么以下不会出错?

for (int i=0; i<10; ++i) // outer loop
{
    for (int i=0; i<10;++i) // inner loop
    {
    //...do something
    }
//...do something else
}
Run Code Online (Sandbox Code Playgroud)

我理解它的方式,大括号({...})中的变量只在这些大括号内.但是内环在外环的支撑内.因此,一旦我声明int i=0内部循环,我不应该得到有关多个定义的错误吗?

fbr*_*eto 15

实际上,您正在创建一个与另一个变量同名的新变量.由于它们位于不同的范围内,因此允许这样做,并且内部范围中的变量"拥有"该名称.您将无法访问i内部范围内的外部范围.

for循环声明本身是for循环范围的一部分,因此在第二种情况下计算为内部范围的一部分i.