“break”是否仅适用于“for”、“while”、“do while”、“switch'”;至于'if'语句呢?
假设在for循环的“break”是否仅适用于“for”、“while”、“do while”、“switch'”;至于'if'语句呢?,c,break,C,Break,假设在for循环的中有一个if语句: for( ; ; ) { if( ) { printf(" inside if"); break; }//if printf("inside for"); }//for 现在,break语句是否会导致编译器退出for循环,或者只有当if中的条件得到满足时,它才会退出if循环体?它将退出for循环。break语句仅对循环(do,for,while)和switch语句(用于中断案例)有效 根据第6
中有一个if
语句:
for( ; ; )
{
if( )
{
printf(" inside if");
break;
}//if
printf("inside for");
}//for
现在,break
语句是否会导致编译器退出for
循环,或者只有当if
中的条件得到满足时,它才会退出if
循环体?它将退出for
循环。break
语句仅对循环(do
,for
,while
)和switch
语句(用于中断案例
)有效
根据第6.8.6.3节:
约束
中断语句只能出现在开关体或回路体中或作为开关体或回路体出现
语义
break语句终止最小封闭开关的执行
或迭代语句
break
不会从if子句中中断,而是从最近的循环或switch子句中中断。此外,if子句不被称为“循环”,因为它从不重复其内容。语句break
从最近的封闭循环或开关语句中中断
break
不是从if
语句中中断,而是从包含该if
语句的最近的loop
或switch
中中断。不中断if
语句的原因是,它通常用于决定是否要中断循环
有趣的是,一个电话交换机出现了问题,因为发明C。他们想中断一个if
语句,却忘了它会中断整个for
语句。中断语句只对循环和开关子句有效。在任何情况下,它都会从最近的封闭环中出来。使用条件中断是一种很好的做法,即中断由一些if语句括起来。如果您想从所有循环或某些循环中走出来,可以使用goto语句。例如:
while(true) {
while (some_condition) {
if (some_condition)
goto label;
}
}
label: // do something here
break语句在决策语句中没有用处。它仅在循环中使用,当您希望强制从循环终止并从循环后面的语句继续执行时。不存在“如果条件为true,则break语句会导致控件出自if语句”的问题,因为不管break语句如何,只要条件为true,并且一旦执行了其主体,控件都会出自if语句。if语句不是循环。它要么根本不执行,要么只执行一次。因此,在if的主体中加一个中断是毫无意义的。中断语句不会中断任何if或else语句。如果您使用的是break语句,它主要来自最近的循环(for循环、while循环、do-while循环和switch case)谢谢,先生,这是一个非常有用的示例。我现在清楚了,这是20年前的新闻。埃雷伦德,你可以像我一样用谷歌搜索它,也许可以从ess软件bug break.FYI这样的东西开始,如果不是循环的话。@CoolGuyswitch
@M.M我知道。OP在中说了“if
loop”,我正在纠正这一点。对于几乎每个问题,goto都可以用break和continue语句代替。goto语句倾向于创建“sphegeti”代码