break
子句如何工作?
我知道如果我在循环中有break
,循环将终止其执行。例如:
for (int i=0; i<10; i++) {
break;
}
但是,如果break
子句在循环内部,但也在if
或else
内,它会起作用吗?例如:
for (int i=0; i<10; i++) {
if (i==7) {
//code
break;
//code
}
}
break
子句是使for
循环结束,还是只是跳过if
子句旁边的代码并继续迭代?
如果break
子句在循环中的循环内怎么办?它会结束两个循环的执行还是只是最近的循环的执行?
提前谢谢。
break 语句将始终仅退出内部循环。如果语句不算作这些语句。如果需要一次中断多个循环,可以使用标记:
A: while (true) {
B: while (true) {
break A;
}
}
'break' 语句总是打破循环。如果要跳过特定索引的迭代,可以使用"continue"关键字:
for (int i=0; i<10; i++) {
if (i==7) {
//code
continue;
//second part of code
}
}
这段代码要做的是,如果 i == 7,它将运行//code 部分,当它到达 continue 语句时,它将立即跳过代码的//second 部分并移动到下一次迭代 i = 8。如果有多个嵌套循环,则 break 语句将仅中断应用它的循环。但是,如果父循环中断,子(嵌套(循环也将自动中断。
for (int i=0; i<10; i++) {
for(int j = 0; j<10; j++){
if(j==3){
break;
}
}
}
此代码只会在 j 等于 3 时中断内部循环。请记住,由于第二个循环是嵌套的,即使它中断,当父循环转到下一个索引时,它也会再次运行。
break
会导致跳转到循环的末尾,如下所示:
for (int i=0; i<10; i++) {
if (i==7) {
// code here will be executed
break;
// code here will not be executed
}
} // break statement is like a goto to this line
一个break
总是只影响一个循环,它最内部的循环
for (int i=0; i<10; i++) {
if (i==7) {
//code A
break;
//code B
}
}
这将运行循环 8 次,并将在i=7
上中断整个循环。此外,语句之后code B
break
将无法访问,因此在这种情况下编写它是没有意义的。