フォールスルー 【fall through】

概要

フォールスルー(fall through)とは、プログラミングにおいてswitch文で分岐を行う際、caseブロックの末尾にbreak文を置かずに次のcaseブロックをそのまま実行すること。

switch文はC言語などに用意された制御構文で、「switch(式){case 値1:ブロック1;break;case 値2:ブロック2;break;…default:規定の処理}」のように記述する。式を評価した結果が値1に一致すればブロック1を、値2に一致すればブロック2を…と対応するブロックを実行し、いずれにも該当しなければdefault:のブロックを実行する。

C言語などではcaseブロックの末尾にあるbreakは省略可能で、省略するとbreakに出会うまで後続のcaseブロックを次々に実行していく。このような制御をフォールスルーと呼び、分岐して何らかの前処理をした後に別の分岐に合流するような処理を効率よく記述できる。

フォールスルーはbreak文の記述を忘れて意図せず起きてしまう場合もあり、制御の流れが把握しづらく厄介なバグの原因となることがあるため批判も多い。Cを拡張したC++言語、Cの仕様を踏襲したJavaやJavaScriptなどにこの仕様が受け継がれているが、C#やSwiftのようにフォールスルーしたい場合は明示的に記述しなければならない設計の言語もある。

(2022.2.14更新)