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

avi*_*avi 33 c break

假设,我iffor循环中有一个语句:

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

  printf("inside for");
}//for
Run Code Online (Sandbox Code Playgroud)

现在,该break语句是否会导致编译器退出for循环,或者只有if当条件if变得满足时它才会出现?

Win*_*mer 79

break语句突破了最近的封闭循环switch语句.

break不会突破if声明,但最近loopswitch包含该if声明.不破坏if声明的原因是因为它通常用于决定是否要突破声明loop.

有趣的是,电话交换机行为不端,因为发明C的公司正好犯了这个错误.他们想要打破一个if声明,他们忘记了它会突破整个for声明.

  • [引证需要] :) (2认同)

Mar*_*ers 19

它会突破for循环.一个break语句只对循环(一个效果do,for,while)和switch语句(爆发的case).

根据C99标准,第6.8.6.3节:

约束

break语句只应出现在开关体或循环体中.

语义

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


Mat*_*nen 14

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