int/uint
定义
Solidity 中整型分为有符号 int
和无符号uint
从8位开始到256位,每次步长8位
也就是
uint8,uit16,uint24 ... uint256
int8,int16,int24... int256
取值范围
uintX
取值范围是 0 - 2^X-1
如uint8
取值范围是0 - 2^8-1 = 0到255
超出范围不是报错而是截断,所以这是一个很危险的操作,使用SafeMath.sol库是一个更好的选择
如这个合约例子:
pragma solidity ^0.5.0;
contract UintOverflow {
uint8 i = 255;
function add() public {
i++;
}
function sub() public {
i--;
}
function get() public view returns (uint8){
return i;
}
}
先执行add
,i =255+1=256
会溢出uint8
的范围,i
会变成0
再执行sub
, i=0-1=-1
会溢出uint8
的范围,i
会变成255
可以再Remix中直接测试这个例子
byte
等待补充
网友评论