资料来源 : Free On-Line Dictionary of Computing
precedence lossage
/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)