Group: comp.lang.java.programmer From: k-e-n Date: Monday, February 25, 2008 6:42 PM Subject: Re: short circuit operators
On Feb 25, 5:19 pm, Patricia Shanahan
wrote:
> k-e-n wrote:
>
> ...
>
> > Also as I mention in the list below it is simply not good practice to
> > mix Bitwise and Boolean operators in the same expression, just because
> > you can, does not mean you should.
> ...
> > 3. And I think most important of all: Do Not Mix Boolean Operators and
> > Bitwise Operators in the Same Expression.
>
> Note that "|" and "&" with boolean operands, such as true and false, are
> not bitwise operations. They are boolean operations without
> short-circuiting, so that the right hand side is evaluated regardless of
> the left hand side value. They are only bitwise operators if applied to
> integer operands.
>
> What is wrong with mixing bitwise and boolean operators in the same
> expression? Suppose I want to do something if a particular bit is on in
> either of two ints:
>
> if( (intA & mask) || (intB & mask) )
>
> seems reasonable to me, but it definitely mixes bitwise and boolean
> operations. How would you do it?
>
> Patricia
I would do it as you have done and as Joshua Cranmer suggests, use
parenthesis to make the precedence and more specifically your intent
clear.
To a programmer the parenthesis are sufficient advice, to someone who
seems not to understand precedence or perhaps more specifically wants
to know why the rule(s)
exists and what is the meta-rule behind that, I felt something
stronger was required.
Did you have any problem with any other parts of my comment? I have no
wish to cause offense or create any controversy.