速查表

支持重载的操作符

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后置自增、自减++ --
1new 表达式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逗号操作符,