Difference between revisions of "Operator precedence"

From D Wiki
Jump to: navigation, search
(Added cast operator)
m (Remove extra cell, causing extra column)
Line 37: Line 37:
 
| 2        || Assignment operators    || /= &= |= -= += <<= >>= >>>= = *= %= ^= ^^= ~= || 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.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
 
| 1        || Comma operator          || ,          || Not to be confused with other uses of ',', though their precedence is the same

Revision as of 02:23, 29 July 2015

Priority Description Operators Comments
15

highest

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 - * / %
10 - + - ~ Binary '~' is the concatenation operator
9 Bit shift operators << >> >>>
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

lowest

Range separator .. Not a real operator, hardwired into syntax at specific points