欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Solidity语言学习笔记————10、布尔型、整型

程序员文章站 2024-03-08 08:27:58
...

前言

本小节主要介绍一下Solidity编程中的布尔数据类型和整型数据类型这两种,其他的数据类型在之后的内容当中会陆续介绍。

布尔类型(Booleans)

bool(布尔)类型的值有两种:
  • true
  • flase

支持的运算符有:

  • 逻辑与——&&
  • 逻辑或——||
  • 逻辑非——!
  • 等   于——=
  • 不等于——!=

bool数据类型的结果经常会被作为条件的判断内容,从而控制条件分支的执行流程。
例如:

pragma solidity ^0.4.0;

contract test{

    function test1() returns(bool){
        return 1>0;
    }
    function test2() returns(bool){
        return 1<0;
    }
}
Solidity语言学习笔记————10、布尔型、整型

整型(Integer)

整型分为:有符号整型和无符号整型。
整型变量的步长以8递增,支持从uint8到uint256,以及int8到int256。需要注意的是,uint和int默认代表的是uint256和int256

支持的运算符:

  • 比较运算符:<、<=、==、!=、>、>=,返回值为bool类型
  • 位 运 算 符:&、|、^(异或)、~(非)。
  • 算 术 运 算:+、-、*、/、**、%
  • 位   运   算:<<、>>、

整数除法总是截断的,比如1/4=0。但如果运算符是字面量,则不会截断,例如:var e=1/4。另外除0会抛出异常,我们来看下面的例子:

pragma solidity ^0.4.0;

// simple store example

contract simpleStorage{

    function divide(uint x,uint y) returns (uint z){
        z = x / y;
    }
}

Solidity语言学习笔记————10、布尔型、整型

移位运算

移位可以分为左移位于右移位。
左移位x<<y相当于执行x*2**y
右移位x>>y相当于执行x/2**y

对一个负数移位会保留符号。

例如:

pragma solidity ^0.4.0;

contract IntegerTest{
    function shift() returns (int, int, int, int){
        var a = -1 << 2;//-4
        var b = -1 >> 2;//0
        var c = 1 << 2;//4
        var d = 1 >> 2;//0
        return (a, b, c, d);
    }
}

Solidity语言学习笔记————10、布尔型、整型
异常问题

除以0或对0取模,对一个值移负数位会抛出运行时异常。

pragma solidity ^0.4.0;

contract IntegerTest{
    function exp() {
        uint a = 1;
        uint b = 0;
        
        //var x = a / b;//VM Exception: invalid opcode
        
        int c = -1;
        
        //var y = a >> c;//VM Exception: invalid opcode
    }
}

Solidity语言学习笔记————10、布尔型、整型

后续内容会陆续更新,敬请期待!