2

ここにコードがあります。

for(int i=0;i<5;i++)
{
    for(int j=0;j<5;j++)
    {
        //checking some conditions here for true or false
        if(false)
        {
            break out of this for loop;
        }
        else if(true)
        {
            printf("true");
        }
    }
}

内側の for ループから抜け出し、外側のループを続行したい。使用しようとしましbreakたが、コントロールも for ループの親から移動しました。

これに対する解決策はありますか?

4

7 に答える 7

1

6.8.6.3 break ステートメント

制約

1 break ステートメントは、switch 本体または loop 本体の中でのみ、またはそれらとして現れるものとします。

セマンティクス

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

ISO/IEC 9899:TC3 より引用

したがって、プレアルファコンパイラを使用していないため、ブレークが機能するはずです。

しかし、問題はそれ以上です

if (false) //will never be executed, as false is ever fals
{
    //code gets never invoked
}

あなたは決して呼び出さないので、あなたは勃発しませんbreak;

于 2013-09-26T10:18:04.377 に答える
0

はい、あなたのコードは正しく、期待どおりに動作するはずです。これをコンパイルして別のものを実行しない限り。:-)

于 2013-09-26T10:17:59.273 に答える
0

フラグを使用して、for ループ条件でチェックしてみてください。

int stop = 0;

for (int i = 0; !stop && i < 5; ++i) {
    for (int j = 0; j < 5; ++j) {
        if (false) {
            stop = 1;
            break;
        }
        // Condition when true does not need 'else' if breaking.
    }
}
于 2013-09-26T10:23:34.310 に答える