Solidity中的值类型介绍

48 阅读3分钟

Solidity是一种面向对象的高级语言,用于创建智能合约Smart contracts ,是决定Ethereum 状态中账户行为的程序。Solidity是一种静态类型的语言。它支持继承、库和复杂的用户定义类型以及其他功能。通过 Solidity,你可以为投票、众筹、盲拍和多签名钱包等用途创建合约。solidity中有各种数据类型,Value Type是其中之一。在这篇博客中,我们将看到solidity 中的一些价值类型。

Introduction To Solidity - DEV CommunityIntroduction To Solidity - DEV Community

Solidity中的类型

Solidity是一种静态类型的语言,这意味着我们需要指定每个变量的类型。Solidity提供了几种基本的类型,我们可以将它们结合起来形成复杂的类型。

其中一个类型是 值类型。因此,让我们看看什么是值类型。

值类型

以下类型也被称为值类型,因为这些类型的变量将总是通过值传递,即当我们把它们作为函数参数或在赋值中使用时,它们总是被复制的。

布尔型

首先,我们将讨论布尔类型。布尔值bool. 表示,布尔类型的值可以是。适用于布尔类型的运算符是-

  • !- 逻辑上的否定
  • && - 逻辑上的和
  • || - 逻辑上的或
  • 平等 - ==
  • 不平等 - !=

逻辑 "和 "逻辑 "或 "运算符遵循与其他编程语言中相同的短路 规则。例如,在表达式 op1(x) || op2(y) 中,如果op1(x) 评估为op2(y) 将不会被评估。

整数

整数类型由关键字uint8uint256int8int256分别表示unsignedsigned 整数。 **uint****int**是对 **uint256****int256**的别名。

我们可以对整数进行的操作有------。

  • 比较。<=,<,==,!=,>=,> (结果值是bool)
  • 位运算符。&,|,^ (按位排他或),~ (按位否定)
  • 移位运算符。 << (左移),>> (右移)
  • 算术运算符。+,-, 单数- (只适用于有符号的整数),*,/,%**

固定点数字

定点数与浮点数数据类型相似,但主要区别在于,在定点数中,我们需要指定整数部分小数部分所需的位数,而在浮点数中则不需要。

我们使用fixed/ufixed关键字来指定不同大小的定点数字 。我们需要以如下方式指定定点数字--fixedMxNufixedMxN 。这里M 表示类型所占的位数,N 表示有多少个小数点

Solidity还不完全支持定点数字,因此我们可以声明定点数字,但不能把它们赋值给它们或从它们赋值。

  • 比较。<=,<,==,!=,>=,>
  • 算术运算符。+,-, 一元的-,*,/%

地址

地址类型是solidity特有的东西。它是一个数据类型,用于存储代表Ethereum地址的20字节的值地址类型有两个版本,即地址地址支付

  • address: 地址类型保存一个20字节的值(一个以太坊地址的大小)。
  • address payable: 它与address 相同,但有额外的成员transfersend

这两种类型的主要区别是:address payable 是一个你可以发送以太币的地址,而普通的address 不能发送以太币。

类型转换。

我们可以隐式地从address payable 转换到address ,而从address 转换到address payable 必须通过payable(<address>) 明确地进行。

uint160 、整数字头、bytes20 和合同类型允许与address 进行显式转换。我们将在接下来的博客中学习合约类型和其他一些类型。因此,请继续关注即将发布的博客。