Operators
The table below lists all the operators supported by Cangjie, along with their precedence and associativity. A smaller value in the Precedence column indicates a higher priority for the corresponding operator.
Operator | Precedence | Description | Example | Associativity |
---|---|---|---|---|
@ | 0 | Macro call | @id | Right |
. | 1 | Member access | expr.id | Left |
[] | 1 | Index | expr[expr] | Left |
() | 1 | Function call | expr(expr) | Left |
++ | 2 | Auto increment | var++ | None |
-- | 2 | Auto decrement | var-- | None |
? | 2 | Question mark | expr?.id , expr?[expr] , expr?(expr) , expr?{expr} | None |
! | 3 | Bitwise NOT, logical NOT | !expr | Right |
- | 3 | Unary minus sign | -expr | Right |
** | 4 | Exponentiation | expr ** expr | Right |
* , / | 5 | Multiplication, division | expr * expr , expr / expr | Left |
% | 5 | Modulo | expr % expr | Left |
+ , - | 6 | Addition, subtraction | expr + expr , expr - expr | Left |
<< | 7 | Bitwise left shift | expr << expr | Left |
>> | 7 | Bitwise right shift | expr >> expr | Left |
.. | 8 | Range operator | expr..expr | None |
..= | 8 | Range operator with step | expr..=expr | None |
< | 9 | Less than | expr < expr | None |
<= | 9 | Less than or equal to | expr <= expr | None |
> | 9 | Greater than | expr > expr | None |
>= | 9 | Greater than or equal to | expr >= expr | None |
is | 9 | Type check | expr is Type | None |
as | 9 | Type conversion | expr as Type | None |
== | 10 | Equality | expr == expr | None |
!= | 10 | Inequality | expr != expr | None |
& | 11 | Bitwise AND | expr & expr | Left |
^ | 12 | Bitwise XOR | expr ^ expr | Left |
| | 13 | Bitwise OR | expr | expr | Left |
&& | 14 | Logical AND | expr && expr | Left |
|| | 15 | Logical OR | expr || expr | Left |
?? | 16 | Coalescing operator | expr ?? expr | Right |
|> | 17 | Pipeline operator | id |> expr | Left |
~> | 17 | Composition operator | expr ~> expr | Left |
= | 18 | Assignment | id = expr | None |
**= | 18 | Compound operator | id **= expr | None |
*= | 18 | Compound operator | id *= expr | None |
/= | 18 | Compound operator | id /= expr | None |
%= | 18 | Compound operator | id %= expr | None |
+= | 18 | Compound operator | id += expr | None |
-= | 18 | Compound operator | id -= expr | None |
<<= | 18 | Compound operator | id <<= expr | None |
>>= | 18 | Compound operator | id >>= expr | None |
&= | 18 | Compound operator | id &= expr | None |
^= | 18 | Compound operator | id ^= expr | None |
|= | 18 | Compound operator | id |= expr | None |
&&= | 18 | Compound operator | id &&= expr | None |
||= | 18 | Compound operator | id ||= expr | None |