难道只为`for`,`while`,`做-while`,'开关”和`if`陈述`break`工作?

StackOverflow https://stackoverflow.com/questions/2565659

  •  23-09-2019
  •  | 
  •  

假设,我有一个if环路内的for语句:

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

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

现在,将break声明会导致编译器出来for循环还是会只来if的身体出曾经在if的条件得到满足?

有帮助吗?

解决方案

break语句就会中断的的最近的封闭的开关语句

break不破的if声明,但包含loop语句最近switchif出来。其原因不是if声明的爆发是因为它通常用来决定是否要打破loop出来。

有趣的是,电话交换机行为不端因为发明Ç本公司生产的正是这种错误 。他们想打破一个if声明了,他们忘了,它会破坏整个for声明了。

其他提示

有将打破for循环的进行。甲break语句只对环(doforwhile)和switch语句(破case出)的效果。

C99标准时,节6.8.6.3:

  

<强>约束

     

break语句应仅在或作为开关体或环体出现。

     

<强>语义

     

break语句终止最小包含开关的执行   或循环语句。

break不会如果条款爆发的,但最近的循环或开关子句。此外,如果一个子句不称为“循环”,因为它从未重复其内容。

Break语句只对循环和开关子句效果。在任何情况下,它会从最近的封闭循环出来。它的使用条件的中断,即一个好的做法if语句攻破一些封闭。如果你想来所有的循环出或部分循环中,您可以使用goto语句。例如:

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

Break语句不会打破任何if或else语句。如果你使用break语句它主要是从最近的循环出来(for循环,while循环,do while循环和开关的情况下)

break语句在decison制作报表没有用。它仅用于循环,当你想从循环强制终止,并继续从该循环之后的语句执行。有没有的问题“将break语句导致控制来if语句的出来,如果条件为真”,因为无论break语句的控制无论如何都会来的if语句的出来,如果条件为真,一旦它的身体执行。 if语句是不是循环。它要么根本exected或exectuted只有一次。因此,它完全没有意义的,把休息的,如果身体内。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top