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


Solidity中的类型
Solidity是一种静态类型的语言,这意味着我们需要指定每个变量的类型。Solidity提供了几种基本的类型,我们可以将它们结合起来形成复杂的类型。
其中一个类型是 值类型。因此,让我们看看什么是值类型。
值类型
以下类型也被称为值类型,因为这些类型的变量将总是通过值传递,即当我们把它们作为函数参数或在赋值中使用时,它们总是被复制的。
布尔型
首先,我们将讨论布尔类型。布尔值 由bool. 表示,布尔类型的值可以是真或假。适用于布尔类型的运算符是-
- !- 逻辑上的否定
- && - 逻辑上的和
- || - 逻辑上的或
- 平等 - ==
- 不平等 - !=
逻辑 "和 "和 逻辑 "或 "运算符遵循与其他编程语言中相同的短路 规则。例如,在表达式 op1(x) || op2(y) 中,如果op1(x) 评估为真,op2(y) 将不会被评估。
整数
整数类型由关键字uint8到uint256 和int8到int256分别表示unsigned 和signed 整数。 **uint**和 **int**是对 **uint256**和 **int256**的别名。
我们可以对整数进行的操作有------。
- 比较。
<=,<,==,!=,>=,>(结果值是bool) - 位运算符。
&,|,^(按位排他或),~(按位否定) - 移位运算符。
<<(左移),>>(右移) - 算术运算符。
+,-, 单数-(只适用于有符号的整数),*,/,%。**
固定点数字
定点数与浮点数数据类型相似,但主要区别在于,在定点数中,我们需要指定整数部分 和小数部分所需的位数,而在浮点数中则不需要。
我们使用fixed/ufixed关键字来指定不同大小的定点数字 。我们需要以如下方式指定定点数字--fixedMxN 和ufixedMxN 。这里M 表示类型所占的位数,N 表示有多少个小数点。
Solidity还不完全支持定点数字,因此我们可以声明定点数字,但不能把它们赋值给它们或从它们赋值。
- 比较。
<=,<,==,!=,>=,> - 算术运算符。
+,-, 一元的-,*,/。%
地址
地址类型是solidity特有的东西。它是一个数据类型,用于存储代表Ethereum地址的20字节的值。地址类型有两个版本,即地址和地址支付。
address: 地址类型保存一个20字节的值(一个以太坊地址的大小)。address payable: 它与address相同,但有额外的成员transfer和send。
这两种类型的主要区别是:address payable 是一个你可以发送以太币的地址,而普通的address 不能发送以太币。
类型转换。
我们可以隐式地从address payable 转换到address ,而从address 转换到address payable 必须通过payable(<address>) 明确地进行。
uint160 、整数字头、bytes20 和合同类型允许与address 进行显式转换。我们将在接下来的博客中学习合约类型和其他一些类型。因此,请继续关注即将发布的博客。