I disagree, the new way is much better. The two different types, logic and bitwise are compeltely different. Having AND and & is great :).
if (flags & 1 AND flags & 2 AND flags & 4) OR flags & 8
Much better than..
if ((flags AND 1) AND (flags AND 2) AND (flags AND 4)) OR (flags AND 8)
Well I'm going to have to disagree with you there. If I didn't see your two examples side by side, I wouldn't have any idea that the & operator takes precedence over the AND operator. And if I was coming from another language and looked at your code, I would just think you were crazy and using different ands for the hell of it.
It should be intutively obvious what order things go in. I have been translating a bunch of code in C the last few days, and seeing stuff like this:
A + B - C + D - E
And I'm like "Oh my god... What order of operations does C use? And what order of operations does Blitz use? I seem to remember from my math classes that + comes before -, or was it that they were both equal in stature, and the equation should be evaluated right to left?"
That in my opinion is stupid. With a few parentheses seperating options the order of operations could be made completely clear. The only time I don't use parentheses to seperate operations in my program is when I'm combining multiplication with addition or something, in which case I know multiplay ALWAYS comes before add.
"A*D - C"
I can be pretty sure will evaluate the same in any language, or by any mathematician, and if you notice, I don't put a space between the operators when they are multiplied to give that extra hint that they are grouped together.
...
Oh and I'm not saying Mark should change the behavior of the operators. I'm saying you coding like that because you can avoid using parentheses is bad.