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,它将运行//代码部分,并且在到达continue语句时,它将立即跳过//第二部分代码,并移至下一个迭代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
将不可访问,因此在这种情况下将其写入是没有意义的。