1

私のコードは次のようなものです:-

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

breakステートメントが実行されると、次の実行はどのforループになりますか?これは非常に抽象的な質問であることは知っていますが、完全なコードを書く時間は本当にありません。ありがとう。

4

4 に答える 4

4

ステートメントは、それが現れるbreak最も近い囲み、、、またはステートメントの実行をdo終了します。この場合、それは内側だけから抜け出すことを意味します。forswitchwhilefor

編集: 標準リファレンス: 6.6.1breakステートメント[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 に答える