Entia non sunt multiplicanda praeter necessitatem.
William of Occam (c. 1320)
The binary *
operator performs multiplication, producing the product of its operands. Multiplication is a commutative operation if the operand expressions have
no side effects. While integer multiplication is associative when the operands are
all of the same type, floating-point multiplication is not associative.
If an integer multiplication overflows, then the result is the low-order bits of the mathematical product as represented in some sufficiently large two's-complement format. As a result, if overflow occurs, then the sign of the result may not be the same as the sign of the mathematical product of the two operand values.
The result of a floating-point multiplication is governed by the rules of IEEE 754 arithmetic:
Despite the fact that overflow, underflow, or loss of information may occur, evaluation of a multiplication operator *
never throws a run-time exception.