break文で抜ける範囲について

break文はひとつ前のループ、switch文を抜けるためのもの。
つまり、while文や、for文、switch文を一段階抜けるためのものなので、入れ子のif文で実行すると、入れ子のif文をすべて抜ける。

下記の例だと、入れ子のswitch文と入れ子のif文でbreakを実行しているが、if文は入れ子を抜けているが、switch文は一段階しか抜けていないことがわかる。

#include <iostream>

using namespace std;

int main()
{
    int subRno_ = 0;
    
    switch (subRno_) {
        case 0:  // コールバック待ち
        {
            int state = 0;
            switch(state){
                case 0:
                    {
                        cout << "hoge" << endl;
                        if(1){
                            cout << "koke" << endl;
                            if(1){
                                cout << "mori" << endl;
                                break; // ここのbreakが実行される
                            }
                            // ここにはこない
                            cout << "umi" << endl;
                            break;
                        }
                        // ここにはこない
                        cout << "kuri" << endl;
                        break;
                    }
                default:
                    break;
            }
            cout << "mosa" << endl;
            break;
        }
        default:
            // ここにはこない
            cout << "gori" << endl;
            break;
    }
    
    return 1;
}
実行結果

hoge
koke
mori
mosa

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です