Solidity – 运算符

Solidity – 运算符

  • 难度级别: 简单
  • 最后更新: 2022 年 5 月 11 日

在任何编程语言中,操作员都扮演着至关重要的角色,即他们为编程奠定了基础。同样,如果不使用操作符,Solidity 的功能也是不完整的。运算符允许用户对操作数执行不同的操作。Solidity 根据其功能支持以下类型的运算符。

  1. 算术运算符
  2. 关系运算符
  3. 逻辑运算符
  4. 位运算符
  5. 赋值运算符
  6. 条件运算符

算术运算符

这些运算符用于执行算术或数学运算。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;
 }
}

输出 :  

猜你喜欢

转载自blog.csdn.net/m0_73054711/article/details/126238385