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;  } }

输出 :  


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

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部