C语言 嵌套大小写、for 和 if 循环的优先级是多少



我有一个类似的程序:

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 whileswitch 的最内层语句。没有必要中断 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循环将中断。

最新更新