【区块链安全 | 第二十篇】类型之运算符

在这里插入图片描述

运算符

算术和位运算符即使在两个操作数类型不同的情况下也可以应用。例如,你可以计算 y = x + z,其中 xuint8 类型,zuint32 类型。在这种情况下,将使用以下机制来确定运算执行的类型(这对于溢出非常重要)以及运算符结果的类型:

  • 如果右操作数的类型可以隐式转换为左操作数的类型,则使用左操作数的类型。
  • 如果左操作数的类型可以隐式转换为右操作数的类型,则使用右操作数的类型。
  • 否则,不允许进行运算。

如果其中一个操作数是字面量数字,它首先会转换为其“移动类型”,即可以容纳该值的最小类型(相同位宽的无符号类型被认为比有符号类型更小)。如果两个操作数都是字面量数字,则运算会使用实际所需的无限精度进行计算,以确保在结果与非字面量类型一起使用时不会丢失精度。

运算符的结果类型与执行运算的类型相同,比较运算符的结果类型总是 bool

运算符 **(指数运算)、<<>> 使用左操作数的类型进行运算和返回结果。

三元运算符

三元运算符用于形如 <表达式> ? <真表达式> : <假表达式&g

猜你喜欢

转载自blog.csdn.net/2301_77485708/article/details/146884428