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.

OperatorPrecedenceDescriptionExampleAssociativity
@0Macro call@idRight
.1Member accessexpr.idLeft
[]1Indexexpr[expr]Left
()1Function callexpr(expr)Left
++2Auto incrementvar++None
--2Auto decrementvar--None
?2Question markexpr?.id, expr?[expr], expr?(expr), expr?{expr}None
!3Bitwise NOT, logical NOT!exprRight
-3Unary minus sign-exprRight
**4Exponentiationexpr ** exprRight
*, /5Multiplication, divisionexpr * expr, expr / exprLeft
%5Moduloexpr % exprLeft
+, -6Addition, subtractionexpr + expr, expr - exprLeft
<<7Bitwise left shiftexpr << exprLeft
>>7Bitwise right shiftexpr >> exprLeft
..8Range operatorexpr..exprNone
..=8Range operator with stepexpr..=exprNone
<9Less thanexpr < exprNone
<=9Less than or equal toexpr <= exprNone
>9Greater thanexpr > exprNone
>=9Greater than or equal toexpr >= exprNone
is9Type checkexpr is TypeNone
as9Type conversionexpr as TypeNone
==10Equalityexpr == exprNone
!=10Inequalityexpr != exprNone
&11Bitwise ANDexpr & exprLeft
^12Bitwise XORexpr ^ exprLeft
|13Bitwise ORexpr | exprLeft
&&14Logical ANDexpr && exprLeft
||15Logical ORexpr || exprLeft
??16Coalescing operatorexpr ?? exprRight
|>17Pipeline operatorid |> exprLeft
~>17Composition operatorexpr ~> exprLeft
=18Assignmentid = exprNone
**=18Compound operatorid **= exprNone
*=18Compound operatorid *= exprNone
/=18Compound operatorid /= exprNone
%=18Compound operatorid %= exprNone
+=18Compound operatorid += exprNone
-=18Compound operatorid -= exprNone
<<=18Compound operatorid <<= exprNone
>>=18Compound operatorid >>= exprNone
&=18Compound operatorid &= exprNone
^=18Compound operatorid ^= exprNone
|=18Compound operatorid |= exprNone
&&=18Compound operatorid &&= exprNone
||=18Compound operatorid ||= exprNone