Solidity – 运算符
Solidity – 运算符
- 难度级别: 简单
- 最后更新: 2022 年 5 月 11 日
在任何编程语言中,操作员都扮演着至关重要的角色,即他们为编程奠定了基础。同样,如果不使用操作符,Solidity 的功能也是不完整的。运算符允许用户对操作数执行不同的操作。Solidity 根据其功能支持以下类型的运算符。
- 算术运算符
- 关系运算符
- 逻辑运算符
- 位运算符
- 赋值运算符
- 条件运算符
算术运算符
这些运算符用于执行算术或数学运算。Solidity 支持以下算术运算符:
| 操作员 | 表示 | 描述 |
|---|---|---|
| 添加 | + | 用于添加两个操作数 |
| 减法 | – | 用于从第一个操作数中减去第二个操作数 |
| 乘法 | * | 用于将两个操作数相乘 |
| 分配 | / | 用于将分子除以分母 |
| 模数 | % | 给出整数除法后的余数 |
| 增量 | ++ | 将整数值加一 |
| 递减 | — | 将整数值减一 |
示例:在下面的示例中,SolidityTest 合约演示了上述不同类型的算术运算符。
- 坚固性
// Solidity contract to demonstrate // Arithmetic Operator pragma solidity ^0.5.0; // Creating a contract contract SolidityTest { // Initializing variables uint16 public a = 20; uint16 public b = 10; // Initializing a variable // with sum uint public sum = a + b; // Initializing a variable // with the difference uint public diff = a - b; // Initializing a variable // with product uint public mul = a * b; // Initializing a variable // with quotient uint public div = a / b; // Initializing a variable // with modulus uint public mod = a % b; // Initializing a variable // decrement value uint public dec = --b; // Initializing a variable // with increment value uint public inc = ++a; } |
输出 :

关系运算符
这些运算符用于比较两个值。Solidity 支持以下关系运算符:
| 操作员 | 表示 | 描述 |
|---|---|---|
| 平等的 | == | 检查两个值是否相等,如果相等则返回 true,反之亦然 |
| 不相等 | != | 检查两个值是否相等,如果不相等则返回 true,反之亦然 |
| 比...更棒 | > | 检查left值是否大于right,如果大于则返回true,反之亦然 |
| 少于 | < | 检查left值是否小于right,如果小于则返回true,反之亦然 |
| 大于或等于 | >= | 检查left值是否大于等于right,如果大于等于则返回true,反之亦然 |
| 小于或等于 | <= | 检查left值是否小于right,如果小于等于则返回true,反之亦然 |
示例:在下面的示例中,合约 SolidityTest演示了上述不同类型的关系运算符。
- 坚固性
// Solidity program to demonstrate // Relational Operator pragma solidity ^0.5.0; // Creating a contract contract SolidityTest { // Declaring variables uint16 public a = 20; uint16 public b = 10; // Initializing a variable // with bool equal result bool public eq = a == b; // Initializing a variable // with bool not equal result bool public noteq = a != b; // Initializing a variable // with bool greater than result bool public gtr = a > b; // Initializing a variable // with bool less than result bool public les = a < b; // Initializing a variable // with bool greater than equal to result bool public gtreq = a >= b; // Initializing a variable // bool less than equal to result bool public leseq = a <= b; } |
输出 :

逻辑运算符
这些运算符用于组合两个或多个条件。Solidity 支持以下算术运算符:
| 操作员 | 表示 | 描述 |
|---|---|---|
| 逻辑与 | && | 如果两个条件都为真,则返回真,如果一个或两个条件都为假,则返回假 |
| 逻辑或 | || | 如果一个或两个条件都为真,则返回真,如果两个条件都为假,则返回假 |
| 逻辑非 | ! | 如果条件不满足则返回真,否则返回假 |
示例:在下面的示例中,合约logicalOperator演示了上述不同类型的逻辑运算符。
- 坚固性
// Solidity program to demonstrate // Logical Operators pragma solidity ^0.5.0; // Creating a contract contract logicalOperator{ // Defining function to demonstrate // Logical operator function Logic( bool a, bool b) public view returns( bool, bool, bool){ // Logical AND operator bool and = a&&b; // Logical OR operator bool or = a||b; // Logical NOT operator bool not = !a; return (and, or, not); } } |
输出 :

位运算符
这些运算符在用于执行位级操作的位级上工作。Solidity 支持以下算术运算符:
| 操作员 | 表示 | 描述 |
|---|---|---|
| 按位与 | & | 对整数参数的每一位执行布尔 AND 运算 |
| 按位或 | | | 对整数参数的每一位执行布尔 OR 运算 |
| 按位异或 | ^ | 对整数参数的每一位执行布尔异或运算 |
| 按位不 | ~ | 对整数参数的每一位执行布尔 NOT 运算 |
| 左移 | << | 将第一个操作数的所有位向左移动第二个操作数指定的位数 |
| 右移 | >> | 将第一个操作数的所有位向右移动第二个操作数指定的位数 |
示例:在下面的示例中,SolidityTest 合约演示了上述不同类型的位运算符。
- 坚固性
// Solidity program to demonstrate // Bitwise Operator pragma solidity ^0.5.0; // Creating a contract contract SolidityTest { // Declaring variables uint16 public a = 20; uint16 public b = 10; // Initializing a variable // to '&' value uint16 public and = a & b; // Initializing a variable // to '|' value uint16 public or = a | b; // Initializing a variable // to '^' value uint16 public xor = a ^ b; // Initializing a variable // to '<<' value uint16 public leftshift = a << b; // Initializing a variable // to '>>' value uint16 public rightshift = a >> b; // Initializing a variable // to '~' value uint16 public not = ~a ; } |
输出 :

赋值运算符
这些运算符用于将值分配给变量。左侧的操作数是可变的,而右侧的操作数是值。Solidity 支持以下算术运算符:
| 操作员 | 表示 | 描述 |
|---|---|---|
| 简单分配 | = | 只需将右侧的值分配给左侧的操作数 |
| 添加作业 | += | 将右侧的操作数添加到左侧的操作数,并将值分配给左侧操作数 |
| 减去作业 | -= | 从左侧的操作数中减去右侧的操作数并将值赋给左侧的操作数 |
| 乘法分配 | *= | 将两个操作数相乘并将值分配给左操作数 |
| 分配作业 | /= | 将左侧的操作数除以右侧的操作数并将值分配给左侧操作数 |
| 模数赋值 | %= | 将左侧的操作数除以右侧的操作数并将余数分配给左侧操作数 |
示例:在下面的示例中,SolidityTest 合约演示了上述不同类型的赋值运算符。
- 坚固性
// Solidity program to demonstrate // Assignment Operator pragma solidity ^0.5.0; // Creating a contract contract SolidityTest { // Declaring variables uint16 public assignment = 20; uint public assignment_add = 50; uint public assign_sub = 50; uint public assign_mul = 10; uint public assign_div = 50; uint public assign_mod = 32; // Defining function to // demonstrate Assignment Operator function getResult() public{ assignment_add += 10; assign_sub -= 20; assign_mul *= 10; assign_div /= 10; assign_mod %= 20; return ; } } |
输出 :

条件运算符
它是一个三元运算符,首先计算表达式,然后检查条件以获取对应于真或假的返回值。
句法:
如果条件为真?然后 A:否则 B 示例:在下面的示例中,合约 SolidityTest演示了条件运算符。
- 坚固性
// Solidity program to demonstrate // Conditional Operator pragma solidity ^0.5.0; // Creating a contract contract SolidityTest{ // Defining function to demonstrate // conditional operator function sub( uint a, uint b) public view returns( uint){ uint result = (a > b? a-b : b-a); return result; } } |
输出 :

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
