中級 › switch文でbreakを忘れて後続のcaseまで実行されるバグ › パターン2
switch文でbreakを忘れて後続のcaseまで実行されるバグ
switch文の各case節末尾にbreakを書き忘れ、該当したcase以降のすべての節が続けて実行されてしまうバグです。
1 #include <iostream> 2 int main() { 3 int level = 1; 4 switch (level) { 5 case 1: 6 std::cout << "low" << std::endl; 7 _________ ^ 8 case 2: 9 std::cout << "mid" << std::endl; 10 break; 11 case 3: 12 std::cout << "high" << std::endl; 13 break; 14 } 15 return 0; 16 }
出力: low\nmid期待: low のみ
空欄を埋めてコンパイル・実行を通す
case 1の末尾にbreakが無いため、一致したcase 1の処理が終わったあとも止まらずcase 2まで続けて実行されてしまいます。
次の問題