在此示例中,break 子句如何响应?

How does the break clause respond in this examples?

break 子句如何工作?

我知道如果我在循环中有一个 break,循环将终止它的执行。例如:

for (int i=0; i<10; i++) {
    break;
}

但是,如果 break 子句既在循环内又在 ifelse 内,它会起作用吗?例如:

for (int i=0; i<10; i++) {
    if (i==7) {   
       //code
       break;
       //code
    }
}

break 子句会使 for 循环结束,还是会跳过 if 子句中它旁边的代码并继续迭代?

如果 break 子句在一个循环内的循环内怎么办?它会结束两个循环的执行还是只结束最近的循环?

提前致谢。

break 语句总是只退出内部循环。 If 语句不算作那些。如果你需要一次打破多个循环,你可以使用标签:

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

a break 将始终只影响一个循环,即它所在的最内层循环

for (int i=0; i<10; i++) {
    if (i==7) {   
       //code A
       break;
       //code B
    }
}

这将 运行 循环 8 次并在 i=7 时中断整个循环。此外,code Bbreak 语句之后将无法访问,因此在这种情况下编写它没有任何意义。