/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 bugs include aliasing bug, memory leak, memory smash, smash the
stack, fandango on core, overrun screw.
pre\box « PRE-CC « PRECCX « precedence lossage
» precharge » precision » predecessor