Difference between revisions of "Operator precedence"

From D Wiki
Jump to: navigation, search
m (D Language)
Line 45: Line 45:
  
  
[[Category:Language]]
+
[[Category:D Language]]

Revision as of 12:49, 3 March 2018

Priority Description Operators Comments
15 Template instantiation ! Top-level , in rhs expression treated specially. Cannot be chained.
14.5 Lambda abstraction => Not a real operator, occurs twice, this is binding power to the left.
14 Postfix operators . ++ -- ( [ ( and [ treat top-level , in rhs expression specially and require balanced ) or ] in order to be completed.
13 Power operator ^^ Right-associative.
12 Unary operators & ++ -- * + - ! ~ cast
11 Multiplicative operators * / %
10 Additive operators + - ~ Binary ~ is the array concatenation operator.
9 Bit shift operators << >> >>> >>> is the always logical shift operator.
6a Comparison operators == != > < >= <= !> !< !>= !<= <> !<> <>= !<>= in !in is !is Unordered with respect to bitwise operators. Cannot be chained.
8b Bitwise And & Unordered with respect to comparison operators.
7b Bitwise Xor ^ Unordered with respect to comparison operators.
6b Bitwise Or | Unordered with respect to comparison operators.
5 Logical And && Short-circuit.
4 Logical Or || Short-circuit.
3 Conditional operator ? : Right-associative.
2 Assignment operators = ^^= *= /= %= += -= ~= <<= >>= >>>= &= |= ^= Right-associative.
1.5 Lambda abstraction => Not a real operator, occurs twice, this is binding power to the right.
1 Comma operator , Not to be confused with other uses of ,, though their precedence is the same.
0 Range separator .. Not a real operator, hardwired into syntax at specific points.