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