/pre's*-dens los'*j/ A C coding error in an expression due to unintended grouping of arithmetic or logical operators. Used especially of certain common coding errors in C due to the nonintuitively low precedence levels 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 the compiler would probably evaluate at compile-time to
(x & 0)
and then to 0.
Precedence lossage can always be avoided by suitable use of parentheses. For this reason, some C programmers deliberately ignore the language's precedence hierarchy and parenthesise defensively. 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.
Other sources of bug s include aliasing bug , memory leak , memory smash , smash the stack , fandango on core , overrun screw .
[ Jargon File ]
(1994-12-16)