Fall through

From JargonWiki

Jump to: navigation, search
The Jargon File

Parts of this article are based on the Jargon File, v. 4.4.7,
a public domain document of hacker jargon.

Image:Glider-small.png
fall through
Usage: v.

See Also: Duff's device


fall through: 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 the above 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. See also Duff's device.

Sources

Source: fall through, in The Jargon File, version 4.4.7.


Public Domain

This article is in the public domain and is not subject to copyright, trademark, or any other legal protection of intellectual property.
Any and all user contributions to this page are also immediately dedicated to the public domain.
Editors of this page must accede to these terms as special conditions of the standard editing privileges.

Image:Public_Domain_sm.png
Personal tools
Toolbox