中級 › switch文でbreakを忘れて後続のcaseまで実行されるバグ › パターン3
switch文でbreakを忘れて後続のcaseまで実行されるバグ
switch文の各case節末尾にbreakを書き忘れ、該当したcase以降のすべての節が続けて実行されてしまうバグです。
1 #include <iostream> 2 int main() { 3 int grade = 1; 4 switch (grade) { 5 case 1: 6 std::cout << "A" << std::endl; 7 _________ ^ 8 case 2: 9 std::cout << "B" << std::endl; 10 break; 11 case 3: 12 std::cout << "C" << std::endl; 13 break; 14 } 15 return 0; 16 }
出力: A\nB期待: A のみ
空欄を埋めてコンパイル・実行を通す
switchはbreakに出会うかブロックの終わりに達するまで、上から下へすべての文を実行し続けます(フォールスルー)。
次の問題