5

私はこれをC++ではなくCで行っています。とにかく、for ループ内に break ステートメントを入れると、for ループだけが停止するのでしょうか、それとも for ループと while ループの両方が停止するのでしょうか? たとえば、これは while と for を含む私のコードの一部です。私がやっていることは、ユーザーに 24 時間の時刻を入力させることであり、このループで分をチェックしています (正しいことを願っています)。私が懸念しているのは、for ループのみを終了させたいので、break ステートメントが for ループのみを終了するのか、それとも for と while の両方を終了するのかということです。

boolean check = false;
while (!check){
    int i;
            for (i = 1; i < 24; i++)
            {
                    int hour = i*100;
                    /* if the time has less hours than the hour counter*/
                    if ((hour - timeOfDay) < 100)
                    {
                    /*declare an illegal time when the number of minutes remaining*/
                    /*is greater than 59*/
                            if ((hour - timeOfDay) > 59)
                            {  
                                    check = false;
                                    break;
                            }
                    }
            }
}
4

4 に答える 4

13

for内側のループのみが壊れ、外側のループは壊れませんwhile
質問を投稿する前に、最小限のコード サンプルで実際にこれをテストできます。Q のフレーミングと同じくらいの時間がかかると思います。

于 2012-10-24T08:33:52.200 に答える
5

C 標準から:(セクション 6.8.6.3)

制約

break ステートメントは、switch 本体または loop 本体の中またはとしてのみ表示されます。

セマンティクス

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

于 2012-10-24T08:35:29.117 に答える
1

ループ内に配置すると、ループのみforが停止/中断されます。for

于 2012-10-24T08:34:12.520 に答える
0

break実行すると、プログラムはその下の他のステートメントの実行を停止し、 の外側に出て、が存在loopするループ本体の直後のステートメントから開始しますbreak。この場合、内側のforループから出てきます。デモを行いたい場合は、ループ(eg printf("outside inner loop");)の閉じ中括弧 } の後に 1 つのステートメントを配置するだけです。for次に、そのステートメントの実行が表示されます。

于 2012-10-24T08:50:56.127 に答える