操作符

下表列出了仓颉支持的所有操作符的优先级及结合性,其中优先级一栏数值越小,对应操作符的优先级越高。

操作符优先级含义示例结合方向
@0宏调用@id右结合
.1成员访问expr.id左结合
[]1索引expr[expr]左结合
()1函数调用expr(expr)左结合
++2自增var++无
--2自减var--无
?2问号expr?.id, expr?[expr], expr?(expr), expr?{expr}无
!3按位求反、逻辑非!expr右结合
-3一元负号-expr右结合
**4幂运算expr ** expr右结合
*, /5乘法,除法expr * expr, expr / expr左结合
%5取模expr % expr左结合
+, -6加法,减法expr + expr, expr - expr左结合
<<7按位左移expr << expr左结合
>>7按位右移expr >> expr左结合
..8区间操作符expr..expr无
..=8含步长的区间操作符expr..=expr无
<9小于expr < expr无
<=9小于等于expr <= expr无
>9大于expr > expr无
>=9大于等于expr >= expr无
is9类型检查expr is Type无
as9类型转换expr as Type无
==10判等expr == expr无
!=10判不等expr != expr无
&11按位与expr & expr左结合
^12按位异或expr ^ expr左结合
|13按位或expr | expr左结合
&&14逻辑与expr && expr左结合
||15逻辑或expr || expr左结合
??16coalescing 操作符expr ?? expr右结合
|>17pipeline 操作符id |> expr左结合
~>17composition 操作符expr ~> expr左结合
=18赋值id = expr无
**=18复合运算符id **= expr无
*=18复合运算符id *= expr无
/=18复合运算符id /= expr无
%=18复合运算符id %= expr无
+=18复合运算符id += expr无
-=18复合运算符id -= expr无
<<=18复合运算符id <<= expr无
>>=18复合运算符id >>= expr无
&=18复合运算符id &= expr无
^=18复合运算符id ^= expr无
|=18复合运算符id |= expr无
&&=18复合运算符id &&= expr无
||=18复合运算符id ||= expr无