目录

操作符

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

操作符 优先级 含义 示例 结合方向
@ 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 无