When numeric, binary, logical or comparison operators are used, the data type of the result is generally the same as the data type of the more precise operand. For example, adding an Integer and a Long first converts the Integer operand to a Long, then performs a long addition, overflowing only if the result cannot be contained with a Long. The order of precision is shown in the following table:
Empty Least precise
Currency Most precise
There are exceptions noted in the descriptions of each operator.
The rules for operand conversion are further complicated when an operator is used with variant data. In many cases, an overflow causes automatic promotion of the result to the next highest precise data type. For example, adding two Integer variants results in an Integer variant unless it overflows, in which case the result is automatically promoted to a Long variant.