C ++中没有大括号的for循环的范围是什么

What is the scope of a for loop without braces in C++

我知道 {...} 引入了一个新的作用域,这就是以下内容不起作用的原因:

for(int i = 0; i < 10; i++) {
    // Do something...
}

cout << i << endl;  // Error: i is not defined in this scope

但是,当我在没有大括号的情况下尝试同样的事情时,我遇到了同样的错误。

for (int i = 0; i < 10; i++) continue;
cout << i << endl;  // Same error, not sure why

我希望在第二个示例中定义 i,因为没有 {...} 来引入新的范围。

i 的可见范围是 for() 循环体。

for (int i = 0; i < 10; i++) continue;

等同于

for (int i = 0; i < 10; i++) { continue; }

如果省略大括号,主体就是 for() 循环头后面的语句。

任何不带大括号的控制结构(ifforwhile 等)仅适用于下一条语句。第二个例子等同于:

for (int i = 0; i < 10; i++) {
    continue;
}
cout << i << endl;

请注意,没有大括号的控制结构通常被认为是不好的风格,因为如果人们添加另一行,他们可能会忘记添加大括号,这可能会导致 dangling else 问题。