我有一个类似的程序:
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
循环?
> break
遵循LIFO类型性质,即最后一个break
将来自第一个控制结构。因此,您选择的break
将脱离for循环,而不是case
。
for
循环。
请参阅:break
声明(C++(:
break 语句结束最近封闭循环的执行,或者 它出现的条件语句。控制传递到 结束语句后面的语句(如果有(。
中断只会脱离for循环。如果你有嵌套语句,它只会突破一个级别
是 for 循环。中断将冒泡,直到找到第一个 for、while 或开关。所以你可以像这样编写程序:
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
}
怎么样:
for(i=3; i<=7 && !foobar[i]; i++) {}
为了完整起见,break
将脱离类型 for
do
while
或 switch
的最内层语句。没有必要中断 if
语句,因为简单地结束代码块将完成相同的工作。
您的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
循环将中断。