Difference between revisions of "Operator precedence"

From D Wiki
Jump to: navigation, search
m (Typography)
(remove unordered comparison operators)
 
(2 intermediate revisions by one other user not shown)
Line 19: Line 19:
 
| 9        || Bit shift operators      || <code><<</code> <code>>></code> <code>>>></code>  || <code>>>></code> is the always logical shift operator.
 
| 9        || Bit shift operators      || <code><<</code> <code>>></code> <code>>>></code>  || <code>>>></code> is the always logical shift operator.
 
|-
 
|-
| 6a      || Comparison operators    || <code>==</code>  <code>!=</code>  <code>></code>  <code><</code> <code>>=</code>  <code><=</code>  <code>!></code> <code>!<</code> <code>!>=</code> <code>!<=</code>  <code><></code> <code>!<></code> <code><>=</code> <code>!<>=</code> <code>in</code> <code>!in</code> <code>is</code>  <code>!is</code>
+
| 6a      || Comparison operators    || <code>==</code>  <code>!=</code>  <code>></code>  <code><</code> <code>>=</code>  <code><=</code>  <code>in</code> <code>!in</code> <code>is</code>  <code>!is</code>
 
                                                                   || Unordered with respect to bitwise operators. Cannot be chained.
 
                                                                   || Unordered with respect to bitwise operators. Cannot be chained.
 
|-
 
|-
Line 43: Line 43:
 
| 0        || Range separator          || <code>..</code>          || Not a real operator, hardwired into syntax at specific points.
 
| 0        || Range separator          || <code>..</code>          || Not a real operator, hardwired into syntax at specific points.
 
|}
 
|}
 +
 +
 +
[[Category:D Language]]

Latest revision as of 05:03, 3 November 2019

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.