The Jargon File (version 4.4.7, 29 Dec 2003):
precedence lossage
/pre's@?dens los'@j/, n.
[C programmers] Coding error in an expression due to unexpected grouping of
arithmetic or logical operators by the compiler. Used esp. of certain
common coding errors in C due to the nonintuitively low precedence levels
of &, |, ^, <<, and >> (for this reason, experienced C programmers
deliberately forget the language's baroque precedence hierarchy and
parenthesize defensively). Can always be avoided by suitable use of
parentheses. LISP fans enjoy pointing out that this can't happen in their
favorite language, which eschews precedence entirely, requiring one to use
explicit parentheses everywhere. See aliasing bug, memory leak, memory
smash, smash the stack, fandango on core, overrun screw.
The Free On-line Dictionary of Computing (30 December 2018):
precedence lossage
/pre's*-dens los'*j/ A misunderstanding of operator
precedence resulting in unintended grouping of arithmetic or
logical operators when coding an expression. Used
especially of mistakes in C code due to the nonintuitively
low precedence of "&", "|", "^", "<<" and ">>". For example,
the following C expression, intended to test the least
significant bit of x,
x & 1 == 0
is parsed as
x & (1 == 0)
which is always zero (false).
Some lazy programmers ignore precedence and parenthesise
everything. Lisp fans enjoy pointing out that this can't
happen in *their* favourite language, which eschews precedence
entirely, requiring one to use explicit parentheses
everywhere.
[Jargon File]
(1994-12-16)