I discovered to my horror that ~A & B is parsed as ~(A & B). I guess this isn’t a bug since the DM4 says that ~ and & have the same precedence. But these choices seem totally bizarre to me:
- unary operators don’t always have higher precedence than binary ones;
- unary minus and bitwise negation don’t have the same precedence;
- unary minus has higher precedence than array indexing (so that -A–>B actually negates the address A rather than the value A–>B).
Of course I6 is not bound to do things like C, but the syntactic similarity might lead one into error (as it did me). Is there a rationale behind these differences?