Em seg., 3 de ago. de 2020 às 04:02, Sjoerd Mullender <sjoerd@monetdb.org> escreveu:
Either way is correct.
Are we missing something?

The first form evaluates both (b->ttype != TYPE_void) and b->tkey, both
of which result in either 0 or 1.  The single & does a bit-wise AND on
those two values and results in 1 if both sides evaluated to 1.
In the second form, if first part evaluates to 0, b->tkey is not
evaluated, and if the first part evaluates to 1, the second part is also
evaluated.  The restult, again, is only 1 if both sides evaluate to 1.
Wait, bitwse AND (&) is not shortcut, If first part evaluates to 0
*b->key is stiil evaluated.*

It is never good to mix relational operators with bitwise operators.

regards,
Ranier Vilela