switch文でcontinueを使用する 質問する

switch文でcontinueを使用する 質問する

次のコードでは、ステートメントの途中からswitchループ ステートメントにジャンプしたいと思います。

while (something = get_something())
{
    switch (something)
    {
    case A:
    case B:
        break;
    default:
        // get another something and try again
        continue;
    }
    // do something for a handled something
    do_something();
}

これは有効な使用方法でしょうかcontinue?continueステートメントはswitchステートメントによって無視されますか? ここで C と C++ の動作は異なりますか?

ベストアンサー1

問題ありません。continueステートメントは囲んでいるループに関連しており、コードは次と同等になるはずです (このようなジャンプ ステートメントは避けてください)。

while (something = get_something()) {
    if (something == A || something == B)
        do_something();
}

breakしかし、コメントが示唆するようにループを終了することを期待する場合(false と評価されるまで、常に別の何かで再試行します)、別の構造が必要になります。

例えば:

do {
    something = get_something();
} while (!(something == A || something == B));
do_something();

おすすめ記事