前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Solidity:原始数据类型

Solidity:原始数据类型

作者头像
孟斯特
发布2024-05-28 20:37:09
1590
发布2024-05-28 20:37:09
举报
文章被收录于专栏:code人生

在Solidity中,有几种原始的数据类型,以下是每种类型和它们的一般用途:

1.bool:布尔类型,可以是truefalse。它常常在逻辑判断中使用。2.int / uint:分别代表有符号和无符号整数。Solidity支持位数从8到256的整数,位数必须是8的倍数,例如int8, uint16, int256, uint64等。默认的intuintint256uint256。这些类型常常用在算数运算中。3.address:代表一个20字节的以太坊地址。这种类型常常用来处理合约和以太坊帐户地址。4.bytes1 to bytes32:固定长度的字节序列,长度从1到32字节。这种类型常常用来处理二进制数据。5.bytes:动态长度的字节序列。这种类型常常用来处理任意长度的二进制数据。6.string:动态长度的字符串。这种类型常常用来处理任意长度的字符串数据。7.mapping:这是一种键-值对存储类型,可以存储几乎任意类型的数据。8.fixed / ufixed:固定点数类型。可以声明定长浮点型的变量,但不能给它们赋值或把它们赋值给其他变量。但是目前(2024年5月),这种类型还处于实验阶段,没有正式发布。

每种类型都有特定的用途,并且在智能合约中扮演了重要的角色。在编写智能合约时,选择合适的数据类型可以优化性能,降低gas消耗,并增强代码的可读性和可维护性。

示例

代码语言:javascript
复制
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

contract DataTypes {
    bool public  boo;   // 默认为false

    /* uint,无符号整数,
        uint8 范围: 0 ~ 2 ** 8 - 1
        uint16 范围: 0 ~ 2 ** 16 - 1 
        uint32 范围: 0 ~ 2 ** 32 - 1 
        ...
        uint256 范围: 0 ~ 2 ** 256 - 1  
    */
    uint8 public u8 = 1;
    uint16 public u16 = 15;
    uint256 public u256 = 2345;

    /* int,有符号整数,
        int8 范围: -2 ** 7 ~ 2 ** 7 - 1
        int16 范围: -2 ** 15 ~ 2 ** 15 - 1 
        int32 范围: -2 ** 31 ~ 2 ** 31 - 1 
        ...
        int256 范围: -2 ** 255 ~ 2 ** 255 - 1  
    */
    int8 public i8 = 1;
    int16 public i16 = -15;
    int256 public i256 = -2345;

    // uint 最大值、最小值,uint 与 uint256 一样
    uint256 public maxUint256 = type(uint256).max;
    uint public maxUint = type(uint).max;
    uint256 public minUint256 = type(uint256).min;
    uint public minUint = type(uint).min;

    // int 最大值、最小值 int 与 int256 一样
    int256 public maxInt256 = type(int256).max;
    int public maxInt = type(int).max;
    int256 public minInt256 = type(int256).min;
    int public minInt = type(int).min;

    // address类型
    address public addr;  // 默认值:0x0000000000000000000000000000000000000000
    address public owner = msg.sender; // 合约部署所有者地址 0x5B38Da6a701c568545dCfcB03FcB875f56beddC4

    // byte类型
    bytes1 public a;    // 默认:0x00
    bytes1 public b = 0x88;
    bytes public myBytes;   // 默认: 0x

    // string类型
    string public s = "hello world";
    string public s1;   // 默认:""

    // mapping类型
    mapping(address => uint) public accounts;
}

声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)[1]进行许可,使用时请注明出处。 Author: mengbin[2] blog: mengbin[3] Github: mengbin92[4] cnblogs: 恋水无意[5] 腾讯云开发者社区:孟斯特[6]

References

[1] 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0): https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh [2] mengbin: mengbin1992@outlook.com [3] mengbin: https://mengbin.top [4] mengbin92: https://mengbin92.github.io/ [5] 恋水无意: https://www.cnblogs.com/lianshuiwuyi/ [6] 孟斯特: https://cloud.tencent.com/developer/user/6649301

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-05-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 孟斯特 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 示例
    • References
    相关产品与服务
    云开发 CloudBase
    云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档