操作符
下表列出了仓颉支持的所有操作符的优先级及结合性,其中优先级一栏数值越小,对应操作符的优先级越高。
| 操作符 | 优先级 | 含义 | 示例 | 结合方向 | 
|---|---|---|---|---|
@ | 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 | 无 | 
is | 9 | 类型检查 | expr is Type | 无 | 
as | 9 | 类型转换 | expr as Type | 无 | 
== | 10 | 判等 | expr == expr | 无 | 
!= | 10 | 判不等 | expr != expr | 无 | 
& | 11 | 按位与 | expr & expr | 左结合 | 
^ | 12 | 按位异或 | expr ^ expr | 左结合 | 
| | 13 | 按位或 | expr | expr | 左结合 | 
&& | 14 | 逻辑与 | expr && expr | 左结合 | 
|| | 15 | 逻辑或 | expr  || expr | 左结合 | 
?? | 16 | coalescing 操作符 | expr ?? expr | 右结合 | 
|> | 17 | pipeline 操作符 | id |> expr | 左结合 | 
~> | 17 | composition 操作符 | 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 | 无 |