我有一个类似的程序:
switch(x)
{ case 1:
for(i=0; i<10; i++)
{
if ((i==3) || (i==4) || (i==5) || (i==6) || (i==7))
{
if (foobar[i])
break; // i am talking about this break
}
}
...further program
break; /not this break
如果foobar[i]
为真,该程序是否会突破case
标签或for
循环?
答案 0 :(得分:12)
break
遵循LIFO类型的性质,也就是说,最后一个break
将来自第一个控制结构。因此,您选择的break
将脱离for循环,而不是case
。
答案 1 :(得分:5)
答案 2 :(得分:2)
break只会突破for循环。如果你有嵌套语句,它只会打破一个级别
答案 3 :(得分:1)
是for循环。休息将起泡,直到找到第一个,一个或一个开关。 所以你可以像这样写你的程序:
switch(x){
case 1:
int loopBreaked = 0; //If you want to know if the loop has breaked
for(int i=0; i<10; i++) {
if (i <= 7 && i >= 3 && foorbar[i]) {
loopBreaked = 1;
break; //breaks the loop
}
}
break; //breaks the switch
}
答案 4 :(得分:0)
怎么样:
for(i=3; i<=7 && !foobar[i]; i++) {}
答案 5 :(得分:0)
为了完整起见,break
将突破for
do
while
或switch
类型的最内层语句。没有必要打破if
语句,因为简单地结束代码块将完成相同的工作。
答案 6 :(得分:0)
您的break
会中断for
循环。而您之后使用的break
会打破switch
。您可以考虑以下代码示例:
for(int i=0;i<len;i++)
{
for(int j=0;j<len;j++)
{
//statements
break;
}
//statements
break;
}
内部循环内的break
打破内部循环,后面的break
语句将破坏外部循环。在您的代码示例中,您注意到的break
位于for
循环内。因此,for
循环将会中断。