概述
Solidity中的变量类型
数值类型 Value Type
此类变量赋值时直接传递数值:布尔型、整数型……
引用类型 Reference Type
此类变量占空间大,赋值时直接传递地址(类似指针):数组、结构体
映射类型 Mapping Type
solidity中的哈希表
函数类型 Function Type
solidity文档中将函数类型归为数值类型(课程作者认为其差别较大故单独分类)
数值类型
布尔型
- 二值变量,取值为true/false
// 布尔值
bool public _bool = true
// 变量_bool的取值是true
- 运算符
- ! (逻辑非)
- && (逻辑与,”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)结果相反也不会被运算
——我的理解是: “或”是一个对都对,有对的就不用看另一个; “与”是一个错都错,有错的就不用看另一个
整型
- solidity中的整数
// 常用的整型
int public _int = -1; //包含负数
uint public _uint = 1; //正整数
uint256 public _uint256 = 20220330; //256位正整数
- 常用运算符:
- 比较运算符(返回布尔值):< =, <, ==, ! =, >, > =
- 算术运算符:+,-,一元运算 -,一元运算 +,*,/,%(取余),**(幂)
// 整数运算
uint256 public _number1 = _number + 1; // +,-,*,/
uint256 public _number2 = 2**2; //指数
uint256 public _number3 = 7 % 2; //取余数
bool public _numberbool = _number2 > _number3; //比大小
地址类型 address
- 储存一个20字节的值(以太坊地址的大小),有成员变量,并作为所有合约的基础
- 普通地址
- 可以转账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
- solidity中用户定义的数据类型
- 主要用于为uint分配名称,使程序易于阅读
——与C语言中的enum类似,使用名称代替从0开始的uint
// 用enum将uint 0,1,2表示为Buy, Hold, Sell
eunm ActionSet { Buy, Hold, Sell }
// 创建enum变量action
ActionSet action = ActionSet.Buy;
- 它可以显式的和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所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复