美文网首页罗韭菜的solidity学习笔记与踩过的坑
罗韭菜的solidity学习(四)整型的坑

罗韭菜的solidity学习(四)整型的坑

作者: 罗雪Melody | 来源:发表于2018-04-09 15:36 被阅读0次

    整型

    • int / uint : 变长的整型,变量支持以8递增,支持从uint8到uint256,以及int8 到int 256
    • uint和int默认uint256和int256

    有符号整型int与无符号整型uint

    • 无符号整型(uint)是计算机编程中的一种数值资料,只能表示0以及正数
    • 有符号整型(int)可以表示任何规定范围内的正数
    • uint 8: 范围为0~255
    • int 8:范围为-127 ~ 127

    运算

    • solidity目前不支持double/float,如果是7/2会得到3,无条件舍去
    • 除0抛异常

    VAR

    • 注意下面代码中var i <=255的话会报错,原因是var i =0
      此时默认为uint8,所以当i循环到最大值时会出错。
    • 如果改成uint16 i 则i<=255没问题
    pragma solidity ^0.4.4;
    
    //uint8 uint16 uint24....uint256
    // int8 int16 int24 int32 ... int256
    
    // int => int256
    // uint => uint 256
    
    // int8 -> 只有8位 11111111 ~ 01111111
    // 第一位为符号 -(1+2+4+8+16+32+64)~ (1+2+4+8+16+32+64) 即 -127 ~ 127
    // int16
    // 1111111111111111 ~ 011111111111111
    // uint8 -> 8
    // 00000000 ~ 11111111 0~255
    
    // uint8 0~255
    contract Test {
    //  function testVar() returns (string) { 这是错的
        function testVar() constant returns (uint8) {
        uint8 a = 100;
        var b = a;
        return b;
      }
    
      function testVar1() constant returns (uint){
        uint a;
        for(var i =0;i < 255; i++){
          a = i;
        }
        return a;
      } 
    }
    

    运算

    • 左移
    • 右移
    • 求幂
    pragma solidity ^0.4.4;
    
    contract  Test{
      uint8 a;
    
      function Test(){
        a=8;
      }
    
      function qiumi(uint8 b)constant returns(uint8){
        return a ** b; // a的b次方
      }
    
      function leftShift(uint8 b)constant returns(uint8){
        return a << b;
        // 0000 10000
        // b =2
        // 左移两位
        // 0010 0000
        // 64
      }
        //右移同上
    }
    

    字面量

    • 不管实际能存储多少,计算过程中都可以随便计算
      如uint8 只能存储到255,但是uint8 a = 11111111111111111111-11111111111111100 都是可以的。

    相关文章

      网友评论

        本文标题:罗韭菜的solidity学习(四)整型的坑

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