美文网首页
以太坊Solidity中的整型int和字节byte

以太坊Solidity中的整型int和字节byte

作者: buyucoder | 来源:发表于2020-09-08 11:51 被阅读0次

    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

    等待补充

    相关文章

      网友评论

          本文标题:以太坊Solidity中的整型int和字节byte

          本文链接:https://www.haomeiwen.com/subject/ogedektx.html