操作符
下表列出了仓颉支持的所有操作符的优先级及结合性,其中优先级一栏数值越小,对应操作符的优先级越高。
| 操作符 | 优先级 | 含义 | 示例 | 结合方向 |
|---|---|---|---|---|
@ |
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 |
无 |