难道只为`for`,`while`,`做-while`,'开关”和`if`陈述`break`工作?
题
假设,我有一个if
环路内的for
语句:
for( ; ; )
{
if( )
{
printf(" inside if");
break;
}//if
printf("inside for");
}//for
现在,将break
声明会导致编译器出来for
循环还是会只来if
的身体出曾经在if
的条件得到满足?
解决方案
在break
语句就会中断的的最近的封闭的环强>或开关强>语句
break
不破的if
声明,但包含loop
语句最近switch
或if
出来。其原因不是if
声明的爆发是因为它通常用来决定是否要打破loop
出来。
有趣的是,电话交换机行为不端因为发明Ç本公司生产的正是这种错误 。他们想打破一个if
声明了,他们忘了,它会破坏整个for
声明了。
其他提示
有将打破for
循环的进行。甲break
语句只对环(do
,for
,while
)和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只有一次。因此,它完全没有意义的,把休息的,如果身体内。