我是靠谱客的博主 年轻缘分,最近开发中收集的这篇文章主要介绍【solidity入门】2. 数值类型 Value Type,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Solidity中的变量类型

数值类型 Value Type

此类变量赋值时直接传递数值:布尔型、整数型……

引用类型 Reference Type

此类变量占空间大,赋值时直接传递地址(类似指针):数组、结构体

映射类型 Mapping Type

solidity中的哈希表

函数类型 Function Type

solidity文档中将函数类型归为数值类型(课程作者认为其差别较大故单独分类)

数值类型

布尔型

  1. 二值变量,取值为true/false
// 布尔值
bool public _bool = true
// 变量_bool的取值是true
  1. 运算符
  • ! (逻辑
  • && (逻辑,”and” )
  • || (逻辑,” or” )
  • == (等于
  • != (不等于
// 布尔运算
bool public _bool1 = !_bool; //非
// _bool1是_bool的非,为false
bool public _bool2 = _bool && _bool1; //与
// _bool && _bool1为false
bool public _bool3 = _bool || _bool1; //或
// _bool || _bool1为true
bool public _bool4 = _bool == _bool1; //等于
// _bool == _bool1为false
bool public _bool5 = _bool != _bool1; //不等于
// _bool != _bool1为true
  • 注:&& 和 || 运算符遵循短路规则

——假如出现 f(x) || g(y)的表达式,若f(x)为true,g(y)即使和f(x)结果相反也不会被运算

——我的理解是: “或”是一个对都对,有对的就不用看另一个; “与”是一个错都错,有错的就不用看另一个

整型

  1. solidity中的整数
// 常用的整型
int public _int = -1; //包含负数
uint public _uint = 1; //正整数
uint256 public _uint256 = 20220330; //256位正整数
  1.  常用运算符:
  • 比较运算符(返回布尔值):< =, <, ==, ! =, >, > =
  • 算术运算符:+,-,一元运算 -,一元运算 +,*,/,%(取余),**(幂)
// 整数运算
uint256 public _number1 = _number + 1; // +,-,*,/
uint256 public _number2 = 2**2; //指数
uint256 public _number3 = 7 % 2; //取余数
bool public _numberbool = _number2 > _number3; //比大小

地址类型 address

  1. 储存一个20字节的值(以太坊地址的大小),有成员变量,并作为所有合约的基础
  2. 普通地址
  3. 可以转账ETH的地址(payable):拥有balance和**transfer()**两个成员,方便查询ETH余额与转账
// 地址
address public _address = 0x7A58c0Be72BE218B41C608b7Fe7C5bB630736C71; //普通地址
address paybale public _address1 = payable(_address); //可转账地址
// 地址类型的成员
uint256 public balance = _address1.balance; // balance of address

(后面介绍函数是会介绍如何使用地址类型)

定长字节数组

字节数组bytes分两种:

——一种定长,为数值型,可以存数据,消耗gas较少:byte, bytes8, bytes32

——另一种不定长,为引用型

// 固定长度的字节数组
bytes32 public _byte32 = "MiniSolidity";
// MiniSolidity变量以字节的方式存储进变量_byte32,转换为16进制为:0x4d696e69536f6c69646974790000000000000000000000000000000000000000
bytes1 public _byte = byte32[0];
// _byte变量存储_byte32的第一个字节,为0x4d

枚举enum

  1. solidity中用户定义的数据类型
  2. 主要用于为uint分配名称,使程序易于阅读

——与C语言中的enum类似,使用名称代替从0开始的uint

// 用enum将uint 0,1,2表示为Buy, Hold, Sell
eunm ActionSet { Buy, Hold, Sell }
// 创建enum变量action
ActionSet action = ActionSet.Buy;
  1. 它可以显式的和uint相互转换,并会检查转换的正整数是否在枚举的长度内,不然会报错:

——隐式转换:一般情况下,数据的类型转换通常由编译系统自动进行,不需要人工干预

——显示转换:如果程序要求一定要将某一类型的数据转换为另一种类型,可以利用强制类型转换运算符进行转换,这种强制转换过程就是显示转换

——uint与int:uint是无符号整数,范围是0~2^31-1,无符号值可以避免误存负数,扩大了表示范围;int是有符号类型,32位系统中占4字节,32比特

——enum:实际问题中有些变量的取值被限定在一个有限的范围内,例如一周有七天,将这些量认为是整型或字符型等都不太妥当,所以有了枚举,在枚举类型的定义中列举出所有可能的取值

// enum与uint显示的转换
function enumToUint() external view returns(uint){
    return uint(action);
}

最后

以上就是年轻缘分为你收集整理的【solidity入门】2. 数值类型 Value Type的全部内容,希望文章能够帮你解决【solidity入门】2. 数值类型 Value Type所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部