1

我的代码是这样的: -

for() //outer for
{
   for() //inner for
   {
      if()
      {
         break;
      }
   }
}

如果break语句执行,下一次执行将是哪个for循环?我知道这是一个非常抽象的问题,但我真的没有时间编写完整的代码。谢谢。

4

4 回答 4

4

break语句终止它出现的最近的封闭do, for, switch, or语句的执行。while在这种情况下,这意味着只突破内部for

编辑: 标准参考: 6.6.1 break 语句 [stmt.break]

1 break 语句应仅出现在迭代语句或 switch 语句中,并导致最小的封闭迭代语句或 switch 语句终止;控制传递到终止语句之后的语句(如果有)。

于 2012-11-14T18:06:01.097 回答
4

break只会打破内在**loop**它只在它被调用的地方打破最近的循环。

在您的示例中,如果满足您的if条件,它将停止内部 for 循环的迭代并移回(继续)外部 for 循环。

于 2012-11-14T18:07:17.370 回答
1

如果你愿意,你也可以使用 goto 来打破外循环。

于 2012-11-15T06:09:09.190 回答
0

您需要一种方法来打破外部循环,因为break它只会离开其封闭范围。你用来管理状态的东西可以是任何东西,但在最简单的形式中,你可以使用一个布尔值并检查它以及最外层循环中的原始条件。

bool breakLoop = false;
for(...; ... && !breakLoop; ...) //outer for
{
   for() //inner for
   {
      if()
      {
         breakLoop = true;
         break;
      }
   }
}
于 2012-11-14T18:09:47.593 回答