相关疑难解决方法(0)

C++ 中“for”循环的范围规则与 C 中不同?

我注意到 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 c++ scope for-loop

20
推荐指数
1
解决办法
578
查看次数

范围隐藏在C中

C是否隐藏了范围?

例如,如果我有一个全局变量:

int x = 3; 
Run Code Online (Sandbox Code Playgroud)

我可以'声明'在函数内部或主要'另一个'int x吗?

c scope

4
推荐指数
1
解决办法
429
查看次数

标签 统计

c ×2

scope ×2

c++ ×1

for-loop ×1