Fall Through

/fȯl thrü/

v. (n. 'fallthrough', var. 'fall-through') 1. To exit a loop by exhaustion, i.e., by having fulfilled its exit condition rather than via a break or exception condition that exits from the middle of it. This usage appears to be *really* old, dating from the 1940s and 1950s.

2. To fail a test that would have passed control to a subroutine or some other distant portion of code.

3. In C, 'fall-through' occurs when the flow of execution in a switch statement reaches a 'case' label other than by jumping there from the switch header, passing a point where one would normally expect to find a 'break'. A trivial example:

switch (color)
{
case GREEN:
  do_green();
  break;
case PINK:
  do_pink();
  /* FALL THROUGH */
case RED:
  do_red();
  break;
default:
  do_blue();
  break;
}

The variant spelling '/* FALL THRU */' is also common.

The effect of this code is to 'do_green()' when color is 'GREEN', 'do_red()' when color is 'RED', 'do_blue()' on any other color other than 'PINK', and (and this is the important part) 'do_pink()' *and then* 'do_red()' when color is 'PINK'. Fall-through is considered harmful by some, though there are contexts (such as the coding of state machines) in which it is natural; it is generally considered good practice to include a comment highlighting the fall-through where one would normally expect a break.