我注意到 C 和 C++ 的循环范围规则for不同。
例如,下面的代码在 C 编译器中合法,但在 C++ 编译器中不合法。
for (int i = 0; i < 10; ++i) {
int i = 5;
}
Run Code Online (Sandbox Code Playgroud)
上面的代码在 C 中有效,但在 C++ 中给出了重新定义错误。
我的猜测是,C 编译器将循环视为循环内有另一个作用域,如下所示。
for (int i = 0; i < 10; ++i) {
{
int i = 5;
}
}
Run Code Online (Sandbox Code Playgroud)
为什么 C 编译器允许在循环范围内定义第二个同名变量?这样做有什么特别的原因或优势吗?
C是否隐藏了范围?
例如,如果我有一个全局变量:
int x = 3;
Run Code Online (Sandbox Code Playgroud)
我可以'声明'在函数内部或主要'另一个'int x吗?