Solidity中的数值类型

  1. 1.布尔型
  2. 2.整型
  3. 3. 地址类型
  4. 4. 定长字节数组
  5. 5. 枚举 enum

1.布尔型

bool public _bool = true;
bool public __bool = false;

2.整型

int public _int = -1; // 整数,包括负数
uint public _uint = 1; // 正整数
uint256 public _number = 20220330; // uint256 0-2**256-1

比较运算符(返回布尔值):<=<==!=>=>

算数运算符: +-*/%(取余),**(指数)

3. 地址类型

地址类型(address)存储一个 20 字节的值(以太坊地址的大小)。

地址类型也有成员变量,并作为所有合约的基础。

有普通的地址和可以转账ETH的地址(payable)。payable的地址拥有balancetransfer()两个成员,方便查询ETH余额以及转账。

4. 定长字节数组

bytebytes1 的别名。

可以将 byte[] 当作字节数组使用,但这种方式非常浪费存储空间,准确来说,是在传入调用时,每个元素会浪费 31 字节。 更好地做法是使用 bytes。

定长bytes可以存一些数据,消耗gas比较少。

关键字有:bytes1bytes2bytes3, …, bytes32

成员变量:

  • .length 表示这个字节数组的长度(只读).
// SPDX-License-Identifier: MIT

//声明solidity版本 这行代码意思是源文件将不允许小于 0.8.4 版本或大于等于 0.9.0 版本的编译器编译
pragma solidity ^0.8.4; 

contract Web3{
    //MiniSolidity变量以字节的方式存储进变量_byte32,转换成16进制为:0x4d696e69536f6c69646974790000000000000000000000000000000000000000
    
    bytes32 public _byte32 = "XiniSolidityS";
    
    //_byte变量存储_byte32的第一个字节,为0x4d。
    bytes1 public _byte = _byte32[0]; 
    
    //_byte32.length的长度
    uint public number = _byte32.length;
}

5. 枚举 enum

枚举(enum)是solidity中用户定义的数据类型。它主要用于为uint分配名称,使程序易于阅读和维护

enum的一个比较冷门的变量,几乎没什么人用。

    // 用enum将uint 0, 1, 2表示为Buy, Hold, Sell
    enum ActionSet { Buy, Hold, Sell }
    // 创建enum变量 action
    ActionSet action = ActionSet.Buy;
pragma solidity ^0.8.4; 

contract HelloWeb3{

    // 用enum将uint 0, 1, 2表示为Buy, Hold, Sell
    enum ActionSet { Buy, Hold, Sell }
    // 创建enum变量 action
    ActionSet action = ActionSet.Hold;


    // enum可以和uint显式的转换  返回ActionSet.Hold = 1
    function enumToUint() external view returns(uint){
        return uint(action);
    }
}

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。