Solidity入门第一步之数据类型

各种类型介绍

  1. 数值类型(Value Type):包括布尔型(bool),整数型(int、uint、uint256)等等,这类变量赋值时候直接传递数值。
  2. 引用类型(Reference Type):包括数组和结构体,这类变量占空间大,赋值时候直接传递地址(类似指针)。
  3. 映射类型(Mapping Type): Solidity里的哈希表。
  4. 函数类型(Function Type)Solidity文档里把函数归到数值类型,但我觉得他跟其他类型差别很大,所以单独分一类。

布尔型

布尔型是二值变量,取值为true或false。用大白话来说就是只能正确或者错误

在这里插入图片描述
在这里插入图片描述
布尔值的运算符,&& 和 ||运算符遵循短路规则,包括:

  1. ! (逻辑非)
    在这里插入图片描述
    在这里插入图片描述

  2. && (逻辑与, “and” ) 双方有一个假的 结果就是假的
    在这里插入图片描述
    在这里插入图片描述

  3. || (逻辑或, “or” ) 双方有一个真的 结果就是真的 当第一个是真的时候不执行第二个
    在这里插入图片描述
    在这里插入图片描述

  4. == (等于) 判断值是否相等
    在这里插入图片描述
    在这里插入图片描述

  5. != (不等于)
    在这里插入图片描述
    在这里插入图片描述

整型

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

在这里插入图片描述
在这里插入图片描述

常用的整型运算符包括:

在这里插入图片描述

代码例子

在这里插入图片描述
在这里插入图片描述

地址类型 (如何使用放在函数那一篇里面给大家讲解)

地址类型(address)存储一个 20 字节的值(以太坊地址的大小)。地址类型也有成员变量,并作为所有合约的基础。有普通的地址和可以转账ETH的地址(payable)。其中,payable修饰的地址相对普通地址多了transfer和send两个成员。在payable修饰的地址中,send执行失败不会影响当前合约的执行(但是返回false值,需要开发人员检查send返回值)。balance和transfer(),可以用来查询ETH余额以及安全转账(内置执行失败的处理)。

代码

// 地址
address public _address = 0x7A58c0Be72BE218B41C608b7Fe7C5bB630736C71;
address payable public _address1 = payable(_address); // payable address,可以转账、查余额
// 地址类型的成员
uint256 public balance = _address1.balance; // balance of address

在这里插入图片描述
在这里插入图片描述

定长字节数组

字节数组bytes分两种,一种定长(byte, bytes8, bytes32),另一种不定长。定长的属于数值类型,

不定长的是引用类型 定长bytes可以存一些数据,消耗gas比较少。

代码

   // 固定长度的字节数组
bytes32 public _byte32 = "HelloWorld"; 
bytes1 public _byte = _byte32[0]; //存储_byte32的第一个字节,为0x48。

bytes1存放一个字节
在这里插入图片描述HelloWorld变量以字节的方式存储进变量_byte32,转换成16进制为:0x48656c6c6f576f726c6400000000000000000000000000000000000000000000

枚举 enum (基本上没有人使用)

枚举(enum)是solidity中用户定义的数据类型。它主要用于为uint分配名称,使程序易于阅读和维护。它与C语言中的enum类似,使用名称来代替从0开始的uint:
在这里插入图片描述
在这里插入图片描述
可以明显看到如果不是显式的和uint相互转换,是不会出现结果的。

猜你喜欢

转载自blog.csdn.net/Wtzink/article/details/134231941