入れ子になったループを壊すとどうなりますか?
次のコードを想定します。
for(int x = 0; x < 10; x++)
{
do {
if(x == 4)
break;
x++;
} while(x != 1);
}
break ステートメント、for ループ、または do while ループに遭遇すると、どのループが終了しますか?
入れ子になったループを壊すとどうなりますか?
次のコードを想定します。
for(int x = 0; x < 10; x++)
{
do {
if(x == 4)
break;
x++;
} while(x != 1);
}
break ステートメント、for ループ、または do while ループに遭遇すると、どのループが終了しますか?
はbreak
常に最も内側のループを中断します。
6.8.6.3
break ステートメントは、囲んでいる最小の switch またはiterationステートメントの実行を終了します。
両方のループから抜け出したい場合は、 の後にラベルを使用し、gotofor
でジャンプします。
または、使用したくない場合はフラグを使用できますgoto
。
int flag = 0;
for(int x = 0; x < 10; x++)
{
do {
if(x == 4) {
flag = 1;
break;
}
x++;
} while(x != 1);
if(flag)
break; // To break the for loop
}
Break は、ブレークを含む最も近い/最も内側のループを強制終了します。あなたの例では、ブレークは do-while を強制終了し、制御は for() ループに戻り、for() の次の反復を開始するだけです。
ただし、do() ループと for() ループの両方で x を変更しているため、実行が少し不安定になります。外側の X が 5 に達すると、無限ループが発生します。
while が中断され、for ループが実行され続けます。