我知道{...}
引入了一个新的作用域,这就是为什么以下内容不起作用的原因:
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
,因为没有{...}
会引入新的作用域。
答案 0 :(得分:6)
任何不带花括号的控制结构(IN
,if
,for
等)仅适用于下一条语句。第二个示例等效于以下内容:
while
请注意,具有不带括号的控件结构通常被认为是不好的样式,因为人们在添加另一行时会忘记添加括号,这可能会导致dangling else问题。
答案 1 :(得分:4)
i
可见性的范围是for()
循环主体。
for (int i = 0; i < 10; i++) continue;
等同于
for (int i = 0; i < 10; i++) { continue; }
如果省略括号,则主体只是for()
循环标题后面的语句。