When using binary operators with operands of different, be aware of the implicit casts.
In particular :

which means some errors could happen, especially if one of the operand is converted from a numeric type to double or float (see for more details).