2022/07/11 Solidity_Day8
# 2022/07/08 Solidity_Day8
### Solidity类型
**`Solidity`类型特点:**
- `undefined`或`null`的值在`Solidity`当中不存在.新声明的变量总是有一个默认值,要处理任何意外的值,应该使用错误处理来恢复整个交易,或者返回一个带有第二个`bool`值的元组表示成功.
#### 值类型(拷贝时候进行值传递)
- `Bool`
- 逻辑运算符
- 整型 (`int`/`uint`) ---> 以8位为步长递增.`uint`和`int`分别是`uint256`和`int256`的别名 ---> 查找该整型的最大或最小值(`type(x).min`、`type(x).max`)
**注意:**
1. `uint32`取值范围: 0 ~ 2**32-1 会遇到数学溢出问题.解决办法:
1. `wrapping` 截断
2. `unchecked` 不检查
3. `checked` 检查 ---> 在`checked`模式下,都会进行溢出检查,如果结果落在取值范围之外,调用会通过`失败异常`回退
#### 地址类型
- `address` 保存一个20字节的值
- `address payable` 可支付地址,与`address`相同.有成员函数`transfer`和`send`
**二者区别:**
`address payable`可以向其发送以太币,而不能先一个普通的`address`发送以太币
**类型转换:**
1. 允许从`address payable` -> `address`的隐式转换,从`address`到`address payable`必须显示转换
2. 通过`payable(<address>)`进行转换 -> `address`允许和`uint160`、 `整型`、`bytes20`及`合约类型`相互转换
**成员:**
1. `code` -> `.codehash`获得该代码的`Keccak-256`哈希值为`bytes32`
2. `codehash`
#### 定长数组和变长数组
1. 定长数组关键字`byte1`、`byte2`、`byte3`、....、`byte32`
2.

浙公网安备 33010602011771号