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