【发布时间】:2010-03-06 17:44:28
【问题描述】:
为什么下面没有报错?
for (int i=0; i<10; ++i) // outer loop
{
for (int i=0; i<10;++i) // inner loop
{
//...do something
}
//...do something else
}
按照我的理解,大括号 ({...}) 中的变量仅在这些大括号内。但是内循环在外循环的大括号内。所以一旦我为内部循环声明int i=0,我不应该得到关于多个定义的错误吗?
【问题讨论】:
-
您现在可能已经这样做了,虽然它有效,但您不应该这样做。它可能会导致可读性降低和一些非常讨厌的错误。
-
在 Java 或 C 中,这肯定会出错。无论我在什么范围内,Java 都不允许重复的局部变量。在 C++ 的情况下,重复变量可以在不同的范围内初始化(这里范围的意思是 { ... })。运行时变量值的优先级与范围有关。如果内部范围内没有初始化重复变量,则外部范围的变量可以在内部范围内访问。