智能合约语言 Solidity基本类型介绍

类型

Solidity是一种静态类型语言,意味着每个变量(本地或状态变量)需要在编译时指定变量的类型(或至少可以推倒出类型)。Solidity提供了一些基本类型可以用来组合成复杂类型。

Solidity类型分为两类:

值类型(Value Type) - 变量在赋值或传参时,总是进行值拷贝。

引用类型(Reference Types)

值类型(Value Type)


布尔类型(Booleans)

整型(Integers)

定长浮点型(Fixed Point Numbers)

定长字节数组(Fixed-size byte arrays)

有理数和整型常量(Rational and Integer Literals)

字符串常量(String literals)

十六进制常量(Hexadecimal literals)

枚举(Enums)

函数类型(Function Types)

地址类型(Address)

地址常量(Address Literals)

下面就类型进行详细介绍


布尔类型(Booleans)


布尔(bool):可能的取值为常量值truefalse

布尔类型支持的运算符有:

!逻辑非

&& 逻辑与

|| 逻辑或

== 等于

!= 不等于

注意:运算符&&||是短路运算符,如f(x)||g(y),当f(x)为真时,则不会继续执行g(y)。

bool a = true;

bool b = !a;

// a == b -> false

// a != b -> true

// a || b -> true

// a && b -> false

整型(Integers)


int/uint: 表示有符号和无符号不同位数整数。支持关键字uint8 到 uint256 (以8步进),

uint 和 int 默认对应的是 uint256 和 int256

支持的运算符


比较运算符: <=, < , ==, !=, >=, > (返回布尔值:true 或 false)

位操作符: &,|,^(异或),~(位取反)

算术操作符:+,-,一元运算-,一元运算+,,/, %(取余数), **(幂), << (左移位), >>(右移位)

注意:Solidity中,右移位是和除等价的,因此右移位一个负数,向下取整时会为0,而不像其他语言里为无限负小数。


一、加 +,减 -,乘 *,除 /


这里我随便填一些数字,可以看到,已经正确计算出来了。



二、求余 %



三、与 &,| 或,非 ~,^ 异或



定长浮点型(Fixed Point Numbers)

ixed/ufixed: 表示有符号和无符号的固定位浮点数。关键字为ufixedMxN 和 ufixedMxN

M表示这个类型要占用的位数,以8步进,可为8到256位。

N表示小数点的个数,可为0到80之间

支持的运算符:

比较运算符: <=, < , ==, !=, >=, > (返回布尔值:true 或 false)

算术操作符:+,-,一元运算-,一元运算+,,/, %(取余数)

注意:它和大多数语言的float和double不一样,*M

是表示整个数占用的固定位数,包含整数部分和小数部分。因此用一个小位数(M较小)来表示一个浮点数时,小数部分会几乎占用整个空间。

字符串常量


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

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


你可能感兴趣的:(智能合约语言 Solidity基本类型介绍)