Logical operator 'and' and BitwiseAnd

Suppose I have this code

dim a as Integer = 1
dim b, c as Integer

If a And BitwiseAnd(b,c) Then Continue

is the result similar to this code?

If BitwiseAnd(a, BitwiseAnd(b,c)) > 0 Then Continue

did you test it? learning is best done by doing

The first code can’t be compiled in Xojo. the second code is not tested yet. I still translate the library into xojo. But, thanks, it’s a good idea.


[code] dim a as Integer = 1
dim b, c as Integer

	If a And Bitwise.BitAnd(b,c) Then Continue[/code]

That’s because Xojo will only recognize booleans as conditions in If statements, not values. In other languages, something like if someInt then will work, but not in Xojo. It must be if someInt <> 0 then. This is relevant because the and keyword will double as both a logical comparison and bitwise operator.

In your example, if ( a and ( b and c ) ) <> 0 then is the easiest way to do what you want.

The Bitwise... functions, while not deprecated, should be considered legacy and unneeded. It is faster to do a = b and c than a = BitwiseAnd( b, c ). The only operations for which they are still needed are ShiftLeft and ShiftRight, unless you want to perform the mathematical equivalents yourself.

Thanks Kem.

I still doubt about mix logical and bitwise operator in Xojo. The actual code is something like this

dim a as Boolean = True
dim b,c as Integer

If a And BitwiseAnd(b, c) Then Exit sub

because this code won’t compile, I think, based on your description, that I will get similar result with this code

If a And (b and c) > 0 Then Exit sub

am I right?

Yes, you need the parenthesis. In your example, if (b and c) > 0 is fine, but if a then is not, and that’s how the compiler will see it.

Ok, thank you kem.