If an integer overflow occurs when computing an expression, the source code generator using the IDL file will terminate with an error.
Details on operators of integer expressions in IDL
Syntax
Operation
Precedence
Associativity
Special considerations
-a
Sign change
1
No
N/A
~a
Bitwise negation
1
No
N/A
a ** b
Exponentiation
2
No
Special considerations:
Due to the lack of associativity, you must use parentheses when specifying multiple consecutive operators to define the order of operations.
Example:
(a ** b) ** c
a ** (b ** c)
The power exponent cannot be negative.
a * b
Multiplication
3
Left
N/A
a / b
Integer division
3
Left
Special considerations:
The result of the operation is a value obtained by rounding the real quotient down to the next lower integer. For example, 4 / 3 = 1, -4 / 3 = -2.
The divisor cannot be zero.
a % b
Modulo
3
Left
Special considerations:
The sign of the operation result matches the sign of the divisor. For example, -5 % 2 = 1, 5 % -2 = -1.
The divisor cannot be zero.
a + b
Addition
4
Left
N/A
a - b
Subtraction
4
Left
N/A
a << b
Bit shift left
2*
No
Special considerations:
The precedence is lower than with unary operations but incomparable to the precedences of binary arithmetic operations. Therefore, in expressions with binary arithmetic operations, you must use parentheses to define the order of operations.
Example:
a << (b + c)
(a << b) ** c
Due to the lack of associativity, you must use parentheses when specifying multiple consecutive operators to define the order of operations.
Example:
(a << b) << c
a << (b << c)
The shift value must be within the interval [0; 63].
a >> b
Bit shift right
2*
No
Special considerations:
The precedence is lower than with unary operations but incomparable to the precedences of binary arithmetic operations. Therefore, in expressions with binary arithmetic operations, you must use parentheses to define the order of operations.
Example:
a >> (b * c)
(a >> b) / c
Due to the lack of associativity, you must use parentheses when specifying multiple consecutive operators to define the order of operations.
Example:
(a >> b) >> c
a >> (b >> c)
The shift value must be within the interval [0; 63].