Solidity--类型

  • 参考Solidity官方文档(当前最新版本:0.4.20)对其类型整理成表,方便查阅

 

 

类型

说明

值类型(ValueType)

布尔类型

(Booleans)

bool

可能的取值为常量值truefalse

整型

(Integers)

int/uint

1.uintint默认对应的是uint256int256

2.整数除法总是截断的,但如果运算符是字面量(字面量稍后讲),则不会截断。

3.整数除0会抛异常。

4.移位运算的结果的正负取决于操作符左边的数。x<< y 和x* 2***y 是相等,x>> y 和x/ 2**y 是相等的。

5.不能进行负移位,即操作符右边的数不可以为负数,否则会抛出运行时异常。

定长浮点型

(FixedPoint Numbers)

fixed/ufixed

关键字为ufixedMxNufixedMxN
M表示这个类型要占用的位数,以8步进,可为8256位。
N表示小数点的个数,可为080之前

支持的运算符:

比较运算符:

<=,< , ==, !=, >=, > (返回布尔值:true或false)

算术操作符:+,-,一元运算-,一元运算+,*,/,%(取余数)
注意:它和大多数语言的float和double不一样,M是表示整个数占用的固定位数,包含整数部分和小数部分。因此用一个小位数(M较小)来表示一个浮点数时,小数部分会几乎占用整个空间。

定长字节数组

(Fixed-sizebyte arrays)

byte

关键字有:bytes1,bytes2, bytes3, ..., bytes32。(以步长1递增)

变长(动态分配大小)字节数组(Dynamically-sizebyte arrays)

Bytes/

string

bytes用来存储任意长度的字节数据,string用来存储任意长度的(UTF-8编码)的字符串数据。
如果长度可以确定,尽量使用定长的如byte1byte32中的一个,因为这样更省空间。

有理数和整型常量

(Rationaland Integer Literals)

 

整型常量是有一系列0-9的数字组成,10进制表示,比如:8进制是不存在的,前置0在Solidity中是无效的。

字符串常量

(Stringliterals)

 

1.字符串常量是指由单引号,或双引号引起来的字符串("foo"or'bar')。字符串并不像C语言,包含结束符,"foo"这个字符串大小仅为三个字节。和整数常量一样,字符串的长度类型可以是变长的。字符串可以隐式的转换为byte1,...byte32如果适合,也会转为bytes或string。

2.字符串常量支持转义字符,比如\n,\xNN,\uNNNN。其中\xNN表示16进制值,最终转换合适的字节。而\uNNNN表示Unicode编码值,最终会转换为UTF8的序列。

十六进制常量

(Hexadecimalliterals)

 

十六进制常量,以关键字hex打头,后面紧跟用单或双引号包裹的字符串,内容是十六进制字符串,如hex"001122ff"
它的值会用二进制来表示。

 

枚举

(Enums)

 

在Solidity中,枚举可以用来自定义类型。它可以显示的转换与整数进行转换,但不能进行隐式转换。显示的转换会在运行时检查数值范围,如果不匹配,将会引起异常。枚举类型应至少有一名成员。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值