Solidity - 运算符
什么是运算符?
让我们看一个简单的表达式4 + 5 等于 9。 这里 4 和 5 称为操作数,"+"称为运算符。 Solidity 支持以下类型的运算符。
- 算术运算符
- 比较运算符
- 逻辑(或关系)运算符
- 赋值运算符
- 条件(或三元)运算符
让我们一一看看所有运算符。
算术运算符
Solidity 支持以下算术运算符 −
假设变量 A 为 10,变量 B 为 20,则 −
序号 | 运算符和描述 |
---|---|
1 | +(加法) 添加两个操作数 例如: A + B 将给出 30 |
2 | -(减法) 从第一个操作数中减去第二个操作数 例如: A - B 将给出 -10 |
3 | *(乘法) 将两个操作数相乘 例如: A * B 将给出 200 |
4 | /(除法) 分子除以分母 例如: B / A 将给出 2 |
5 | %(模数) 输出整数除法的余数 例如: B % A 将给出 0 |
6 | ++(增量) 将整数值加一 例如: A++ 将给出 11 |
7 | --(递减) 将整数值减一 例如: A-- 将给出 9 |
比较运算符
Solidity 支持以下比较运算符 −
假设变量 A 为 10,变量 B 为 20,则 −
序号 | 运算符和描述 |
---|---|
1 |
= =(等于) 检查两个操作数的值是否相等,如果相等,则条件成立。 例如: (A == B) 不正确。 |
2 |
!=(不等于) 检查两个操作数的值是否相等,如果不相等,则条件成立。 例如: (A != B) 为真。 |
3 |
> (大于) 检查左操作数的值是否大于右操作数的值,如果是,则条件成立。 例如:(A > B)不正确。 |
4 |
< (小于) 检查左操作数的值是否小于右操作数的值,如果是,则条件成立。 例如: (A < B) 为真。 |
5 |
>= (大于或等于) 检查左操作数的值是否大于或等于右操作数的值,如果是,则条件成立。 例如: (A >= B) 不正确。 |
6 |
<= (小于或等于) 检查左操作数的值是否小于或等于右操作数的值,如果是,则条件成立。 例如: (A <= B) 为真。 |
逻辑运算符
Solidity 支持以下逻辑运算符 −
假设变量 A 为 10,变量 B 为 20,则 −
序号 | 运算符和描述 |
---|---|
1 | && (逻辑与) 如果两个操作数都非零,则条件为真。 例如: (A && B) 是正确的。 |
2 | || (逻辑或) 如果两个操作数中有任何一个非零,则条件为真。 例如: (A || B) 为真。 |
3 | ! (逻辑非) 反转其操作数的逻辑状态。 如果条件为真,则逻辑 NOT 运算符会将其设为假。 例如:! (A && B) 是错误的。 |
按位运算符
Solidity 支持以下按位运算符 −
假设变量 A 持有 2,变量 B 持有 3,则 −
序号 | 运算符和描述 |
---|---|
1 | & (按位与) 它对其整数参数的每一位执行布尔 AND 运算。 例如:(A & B)是 2。 |
2 | | (按位或) 它对其整数参数的每一位执行布尔 OR 运算。 例如: (A | B) 是 3。 |
3 | ^ (按位异或) 它对其整数参数的每一位执行布尔异或运算。 异或意味着操作数一为真或操作数二为真,但不能两者都为真。 例如: (A ^ B) 为 1。 |
4 | ~ (按位取反) 它是一个一元运算符,通过反转操作数中的所有位进行运算。 例如: (~B) 为 -4。 |
5 | << (左移) 它将第一个操作数中的所有位向左移动第二个操作数中指定的位数。 新的位用零填充。 将值左移一位相当于乘以 2,左移两位相当于乘以 4,依此类推。 例如:(A << 1)是 4。 |
6 | >> (右移) 二进制右移运算符。 左操作数的值向右移动右操作数指定的位数。 例如: (A >> 1) 是 1。 |
7 | >>> (右移为零) 这个运算符就像 >> 运算符,只不过左侧移入的位始终为零。 例如: (A >>> 1) 是 1。 |
赋值运算符
Solidity 支持以下赋值运算符 −
序号 | 运算符和描述 |
---|---|
1 | =(简单赋值) 将右侧操作数的值赋给左侧操作数 例如: C = A + B 会将 A + B 的值赋给 C |
2 | +=(添加和赋值) 它将右操作数添加到左操作数,并将结果赋值给左操作数。 例如: C += A 相当于 C = C + A |
3 | −= (减法和赋值) 它从左操作数中减去右操作数,并将结果赋给左操作数。 例如: C -= A 相当于 C = C - A |
4 | *=(乘法和赋值) 它将右操作数与左操作数相乘,并将结果赋给左操作数。 例如: C *= A 相当于 C = C * A |
5 | /= (除法和赋值) 它将左操作数与右操作数相除,并将结果赋给左操作数。 例如: C /= A 相当于 C = C / A |
6 | %=(模块和赋值) 它使用两个操作数取模并将结果赋值给左侧操作数。 例如: C %= A 相当于 C = C % A |
注意 − 相同的逻辑适用于按位运算符,因此它们将变得像 <<=, >>=, >>=, &=, |= 和 ^=。
条件运算符 (? :)
条件运算符首先计算表达式的真值或假值,然后根据计算结果执行两个给定语句之一。
序号 | 运算符和描述 |
---|---|
1 | ? : (Conditional ) 如果条件为真? 然后值 X :否则值 Y |