Where is '&' defined to be an arithmetic operator? Isn't it a bit-manipulation operator -- which thus has the same precedence as logical operators, such as '&&' -- and is thus of lower precedence than the relational operator '==', hence the necessity for parentheses.