fall through
読み:フォール-スルー
外語:fall through
C/C++のswitch文で、あるcaseブロックから次のcaseブロックにそのまま流れていくこと。および、そのような言語仕様。
概要
Cの設計ミスの一つにswitch文がある。
一つのcaseブロックを処理し終えたらswitch文から抜ける、というのはプログラマーが期待する一般的な動作である。
しかし、Cやその派生言語では、その一般的な動作のために意図的にbreak文を書かねばならない。
C系言語には、プログラマーが気をつけねばならない仕様が意外と多い。
特徴
if〜elseの羅列と異なり、switch文はcaseラベルを用いて分岐するというものである。
caseが使用するものが、あくまでもラベルであることから、一つのcaseブロックの処理が終了してもswitch文から抜けることなく、そのまま次のcaseブロックへと流れてしまう。switch文を終了するためには、意図的にbreak文を使用しなければならない。
結果として、break文を書き忘れたことにより意図せぬcaseブロックへと処理が流れ、発見しづらいバグを生じさせるという問題を生み出すことになった。
そしてこの欠陥は、Cの上位互換であるC++はもちろん、派生言語であるObjective-CやJava、C#などにも引き継がれた。
一方、Swiftでは、fallthroughと明示しないとfall throughしないという逆の仕様となっている。
再検索