Abr*_*don -5 c++ scope curly-braces
据我所知,{...}
引入了一个新的范围,这就是为什么以下方法不起作用:
for(int i = 0; i < 10; i++) {
// Do something...
}
cout << i << endl; // Error: i is not defined in this scope
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试没有大括号的同样的事情时,我得到了同样的错误.
for (int i = 0; i < 10; i++) continue;
cout << i << endl; // Same error, not sure why
Run Code Online (Sandbox Code Playgroud)
我希望i
在第二个例子中定义,因为没有{...}
引入新的范围.
任何控制结构(if
,for
,while
等),而不适用于大括号只对下一个语句.第二个例子相当于以下内容:
for (int i = 0; i < 10; i++) {
continue;
}
cout << i << endl;
Run Code Online (Sandbox Code Playgroud)
请注意,拥有没有大括号的控制结构通常被认为是不好的风格,因为如果添加另一条线,人们可能会忘记添加大括号,并且可能导致悬空的其他问题.