- 参考Solidity官方文档(当前最新版本:0.4.20)对其类型整理成表,方便查阅
类型 | 说明 | ||
值类型(ValueType) | 布尔类型 (Booleans) | bool | 可能的取值为常量值true和false |
整型 (Integers) | int/uint | 1.uint和int默认对应的是uint256和int256 2.整数除法总是截断的,但如果运算符是字面量(字面量稍后讲),则不会截断。 3.整数除0会抛异常。 4.移位运算的结果的正负取决于操作符左边的数。x<< y 和x* 2***y 是相等,x>> y 和x/ 2**y 是相等的。 5.不能进行负移位,即操作符右边的数不可以为负数,否则会抛出运行时异常。 | |
定长浮点型 (FixedPoint Numbers) | fixed/ufixed | 关键字为ufixedMxN和ufixedMxN。 支持的运算符: 比较运算符: <=,< , ==, !=, >=, > (返回布尔值:true或false) 算术操作符:+,-,一元运算-,一元运算+,*,/,%(取余数) | |
定长字节数组 (Fixed-sizebyte arrays) | byte | 关键字有:bytes1,bytes2, bytes3, ..., bytes32。(以步长1递增) | |
变长(动态分配大小)字节数组(Dynamically-sizebyte arrays) | Bytes/ string | bytes用来存储任意长度的字节数据,string用来存储任意长度的(UTF-8编码)的字符串数据。 | |
有理数和整型常量 (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中,枚举可以用来自定义类型。它可以显示的转换与整数进行转换,但不能进行隐式转换。显示的转换会在运行时检查数值范围,如果不匹配,将会引起异常。枚举类型应至少有一名成员。 |