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