`break`只适用于`for`,`while`,`do-while`,`switch'和`if`语句?

时间:2010-04-02 08:08:49

标签: c break

假设我在if循环中有一个for语句:

for( ; ; )
{
  if( )
    {
     printf(" inside if");
     break;
    }//if         

  printf("inside for");
}//for

现在,break语句是否会导致编译器退出for循环,或者只有if中的条件才会出现if变得满意?

6 个答案:

答案 0 :(得分:77)

break语句突破最近的封闭循环开关语句

break不会突破if语句,而是包含该loop语句的最近的switchif。不打破if语句的原因是因为它通常用于决定是否要突破loop

有趣的是,由于发明了C made exactly this bug的公司,电话交换机行为不端。他们想要打破if声明,他们忘记了它会突破整个for声明。

答案 1 :(得分:19)

它会突破for循环。 break语句仅对循环(doforwhile)和switch语句产生影响(用于突破case )。

来自C99 standard,第6.8.6.3节:

  

<强>约束

     

break语句只能出现在开关体或循环体中。

     

<强>语义

     

break语句终止执行最小的封闭开关   或迭代声明。

答案 2 :(得分:14)

break不会突破if子句,而是最近的循环或switch子句。此外,if子句不称为“循环”,因为它从不重复其内容。

答案 3 :(得分:2)

Break语句仅对循环和switch子句生效。无论如何,它将从最近的封闭循环中出来。使用条件中断即一些if语句包含的中断是一种很好的做法。如果你想要从所有循环或一些循环中出来,你可以使用goto语句。例如:

while(true) {
     while (some_condition) {
          if (some_condition)
               goto label;
     }
}
label: // do something here

答案 4 :(得分:0)

中断语句不会中断任何if或else语句。如果您使用break语句,则它主要来自最近的循环(for循环,while循环,while循环和切换大小写)

答案 5 :(得分:-1)

break语句在决策制作声明中没有用处。它只在循环中使用,当你想强制终止循环并从循环后的语句继续执行时。毫无疑问,“如果条件为真,则会断开语句导致控制从if语句中出来”,因为无论break语句如何,如果条件为真,并且其主体是执行。 if语句不是循环。它要么根本不被执行,要么只被执行一次。因此,在if的主体中放置一个绝对是没有意义的。