12

入れ子になったループを壊すとどうなりますか?

次のコードを想定します。

for(int x = 0; x < 10; x++)
{
    do {
        if(x == 4)
            break;
        x++;
    } while(x != 1);
}

break ステートメント、for ループ、または do while ループに遭遇すると、どのループが終了しますか?

4

4 に答える 4

10

break常に最も内側のループを中断します。

6.8.6.3

break ステートメントは、囲んでいる最小の switch またはiterationステートメントの実行を終了します。


両方のループから抜け出したい場合は、 の後にラベルを使用し、gotoforでジャンプします。

于 2012-08-31T14:06:56.310 に答える
4

または、使用したくない場合はフラグを使用できます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
}
于 2012-08-31T14:16:31.997 に答える
1

Break は、ブレークを含む最も近い/最も内側のループを強制終了します。あなたの例では、ブレークは do-while を強制終了し、制御は for() ループに戻り、for() の次の反復を開始するだけです。

ただし、do() ループと for() ループの両方で x を変更しているため、実行が少し不安定になります。外側の X が 5 に達すると、無限ループが発生します。

于 2012-08-31T14:08:16.153 に答える
1

while が中断され、for ループが実行され続けます。

于 2012-08-31T14:09:12.443 に答える