Operators
The following table lists all operators supported by Cangjie, along with their precedence and associativity. In the precedence column, a smaller numerical value indicates higher operator precedence.
| Operator | Precedence | Meaning | Example | Associativity |
|---|---|---|---|---|
@ |
0 | Macro invocation | @id |
Right |
. |
1 | Member access | expr.id |
Left |
[] |
1 | Indexing | expr[expr] |
Left |
() |
1 | Function call | expr(expr) |
Left |
++ |
2 | Increment | var++ |
None |
-- |
2 | 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 | -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 | Left-closed right-open range | expr..expr |
None |
..= |
8 | Closed range | expr..=expr |
None |
< |
9 | Less than | expr < expr |
None |
<= |
9 | Less than or equal | expr <= expr |
None |
> |
9 | Greater than | expr > expr |
None |
>= |
9 | Greater than or equal | 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 |