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