速查表
支持重载的操作符
Solidity
支持通过 using for
实现操作符重载,但是目前只允许对用户自定义的值类型
进行操作符重载。
支持重载的操作符,以及函数签名如下:
操作类型 | 操作符 | 函数签名 |
---|---|---|
按位与 | & | function (T, T) pure returns (T) |
位运或 | | | function (T, T) pure returns (T) |
位运异或 | ^ | function (T, T) pure returns (T) |
位运取反 | ~ | function (T) pure returns (T) |
数学加法 | + | function (T, T) pure returns (T) |
数学减法 | - | function (T, T) pure returns (T) |
前置负号 | - | function (T) pure returns (T) |
数学乘法 | * | function (T, T) pure returns (T) |
数学除法 | / | function (T, T) pure returns (T) |
数学求余 | % | function (T, T) pure returns (T) |
判断相等 | == | function (T, T) pure returns (bool) |
判断不等 | != | function (T, T) pure returns (bool) |
判断小于 | < | function (T, T) pure returns (bool) |
判断小于等于 | <= | function (T, T) pure returns (bool) |
判断大于 | > | function (T, T) pure returns (bool) |
判断大于等于 | >= | function (T, T) pure returns (bool) |
操作符优先级
Solidity
支持的操作符以及其优先级如下表:
优先级 | 描述 | 操作符 |
---|---|---|
1 | 后置自增、自减 | ++ -- |
1 | new 表达式 | new <类型名> |
1 | 数组下标访问 | 数组[索引] |
1 | 成员访问 | 对象.成员 |
1 | 函数调用 | 函数() |
1 | 括号 | () |
2 | 前置自增、自减 | ++ , -- |
2 | 一元减法 | - |
2 | 一元操作符 | delete |
2 | 逻辑非 | ! |
2 | 按位取反 | ~ |
3 | 幂运算 | ** |
4 | 乘、除、求余 | * / % |
5 | 加、减 | + - |
6 | 左移、右移 | << >> |
7 | 按位与 | & |
8 | 按位异或 | ^ |
9 | 按位或 | | |
10 | 小于、大于、小于等于、大于等于 | < > <= >= |
11 | 等于、不等于 | == != |
12 | 逻辑与 | && |
13 | 逻辑或 | || |
14 | 三元操作符 | 条件 ? 真表达式 : 假表达式 |
14 | 赋值操作符 | = |= ^= &= < <= > >= += -= *= /= %= |
15 | 逗号操作符 | , |