Check your precedence table again. I believe you may be getting confused with the unary address operator &
and the binary bitwise-and operator &
.
See: http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B#Operator_precedence
With this interpretation, you increment a
before applying the bitwise-and.