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.

posted @ 2022-08-10 18:09  俊king  阅读(43)  评论(0)    收藏  举报