一个被声明的变量将有一个初始默认值,其字节表示为所有的零。
变量的 "默认值" 是任何类型的典型 "零状态"。
例如, bool 的默认值是 false。 uint 或 int 类型的默认值是 0。
对于静态大小的数组和 bytes1 到 bytes32, 每个单独的元素将被初始化为与其类型相应的默认值。
对于动态大小的数组, bytes 和 string,默认值是一个空数组或字符串。
对于 enum 类型,默认值是其第一个成员。在Solidity中,不同的数据类型有不同的默认初始化值。下面是一个更全面的列表,包括所有基本类型、特殊类型及其默认值:
类型 |
默认初始化值 |
说明 |
|
|
布尔类型,默认为假。 |
|
|
有符号整数,默认为零。 |
|
|
无符号整数,默认为零。 |
定长字节数组( |
|
定长字节序列,默认每个字节都为 |
动态字节数组 |
空字节数组 |
动态大小的字节序列,默认为空。 |
|
空字符串 |
UTF-8编码的字符串,默认为空。 |
固定大小数组(如 |
元素类型的默认值 |
如
|
动态大小数组(如 |
空数组 |
动态大小的数组,默认为空(长度为 |
枚举 ( |
第一个枚举成员 |
枚举类型的默认值是其成员列表中的第一个成员。 |
结构体 ( |
成员的默认值 |
结构体中的每个字段都将初始化为该字段类型的默认值。 |
地址 ( |
|
地址类型,默认为0地址。 |
地址的支付能力 ( |
|
可接收以太币的地址类型,默认也为0地址。 |
映射 ( |
N/A |
映射类型本身没有默认值,但访问任何未设置的键将返回值类型的默认值。 |
需要注意的是,映射(mapping
)类型的变量在技术上没有"初始化"的概念,因为它们实际上是在虚拟的、无限的键空间中工作的。
访问任何未显式设置的键时,映射将返回该值类型的默认值。
例如,对于一个mapping(address => uint)
类型的变量,如果尝试访问一个未设置的地址键,将返回uint
类型的默认值0
。