Joe Buck wrote:
On Fri, Jan 11, 2008 at 09:34:29AM +0200, Rehno Lindeque wrote:
Just a note: Operator precedence is taught as logical AND comes before
OR in logic courses. So it is a sort of a standard mathematical
convention just like + and *. In fact, OR is even represented as a +
in some notations. However it might not be practical to assume all
programmers have a background in logic.
A warning that flagged code like
if (c1 || c2 && c3)
...
would swamp users in warnings, since this kind of code is extremely
common, and this isn't the kind of thing that anyone who's not a total C
beginner has trouble with.
I find it a valuable warning, I think it is a mistake to rely on
dubious precedence for cases like this (dubious because the analogy
of || and && with + and * is stretching things).
I must say I prefer the Ada syntax here, which prohibits mixing
of different logical operators in this way.