欢迎订阅专栏:3分钟Solidity--智能合约--Web3区块链技术必学
如需获取本内容的最新版本,请参见 Cyfrin.io 上的未核对数学(代码示例)
Solidity 0.8 中的数字溢出和下溢会抛出错误。
可以通过使用 unchecked来禁用此功能。禁用溢出/下溢检查可以节省 Gas。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
contract UncheckedMath {
function add(uint256 x, uint256 y) external pure returns (uint256) {
// 22291 gas
// return x + y;
// 22103 gas
unchecked {
return x + y;
}
}
function sub(uint256 x, uint256 y) external pure returns (uint256) {
// 22329 gas
// return x - y;
// 22147 gas
unchecked {
return x - y;
}
}
function sumOfCubes(uint256 x, uint256 y) external pure returns (uint256) {
// 将复杂的数学逻辑封装在unchecked中
unchecked {
uint256 x3 = x * x * x;
uint256 y3 = y * y * y;
return x3 + y3;
}
}
}
Remix Lite 尝试一下
END