4

我有一个类似的程序:

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循环?

4

7 回答 7

12

遵循 LIFO 类型的break性质,即最后break会从第一个控制结构中出来。因此,break您选择的 将跳出 for 循环,而不是case.

于 2013-07-26T16:34:13.217 回答
5

for循环 。

请参阅:break语句(C++)

break 语句结束它出现的最近的封闭循环或条件语句的执行。控制传递到结束语句之后的语句(如果有)。

于 2013-07-26T16:35:27.633 回答
2

break 只会跳出 for 循环。如果你有嵌套语句,它只会突破一层

于 2013-07-26T16:34:20.900 回答
1

是for循环。break 会冒泡,直到找到第一个 for、while 或 switch。所以你可以像这样编写你的程序:

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
}
于 2013-07-26T16:59:07.747 回答
0

为了完整起见,break将打破类型的最里面的语句for do while,或switch。无需中断if语句,因为只需结束代码块即可完成相同的工作。

于 2013-07-26T20:17:14.780 回答
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循环会中断。

于 2013-07-27T04:34:55.817 回答
0

怎么样:

for(i=3; i<=7 && !foobar[i]; i++) {}
于 2013-07-26T18:11:15.837 回答