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