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()
循环头后面的语句。
任何不带大括号的控制结构(if
、for
、while
等)仅适用于下一条语句。第二个例子等同于:
for (int i = 0; i < 10; i++) {
continue;
}
cout << i << endl;
请注意,没有大括号的控制结构通常被认为是不好的风格,因为如果人们添加另一行,他们可能会忘记添加大括号,这可能会导致 dangling else 问题。
我知道 {...}
引入了一个新的作用域,这就是以下内容不起作用的原因:
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()
循环头后面的语句。
任何不带大括号的控制结构(if
、for
、while
等)仅适用于下一条语句。第二个例子等同于:
for (int i = 0; i < 10; i++) {
continue;
}
cout << i << endl;
请注意,没有大括号的控制结构通常被认为是不好的风格,因为如果人们添加另一行,他们可能会忘记添加大括号,这可能会导致 dangling else 问题。