Solidity語言學習筆記————10、布林型、整型
前言
本小節主要介紹一下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;
}
}
整型(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;
}
}
移位運算
移位可以分為左移位於右移位。
左移位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);
}
}
異常問題
除以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語言學習筆記————1、初識Solidity語言Solid筆記
- Solidity語言學習筆記————38、Solidity彙編Solid筆記
- Solidity語言學習筆記————36、 庫Solid筆記
- Solidity語言學習筆記————37、Using forSolid筆記
- Solidity語言學習筆記————4、常量Solid筆記
- Solidity語言學習筆記————33、事件(Events)Solid筆記事件
- Solidity語言學習筆記————12、陣列Solid筆記陣列
- Solidity語言學習筆記————34、繼承Solid筆記繼承
- Solidity語言學習筆記————43、安全考量Solid筆記
- Solidity語言學習筆記————42、提示和技巧Solid筆記
- Solidity語言學習筆記————28、純函式Solid筆記函式
- Solidity語言學習筆記————26、回退函式Solid筆記函式
- Solidity語言學習筆記————16、對映MappingSolid筆記APP
- Solidity語言學習筆記————32、建立合約Solid筆記
- Solidity語言學習筆記————41、記憶體佈局Solid筆記記憶體
- Solidity語言學習筆記————39、獨立彙編Solid筆記
- Solidity語言學習筆記————25、作用域和宣告Solid筆記
- Solidity語言學習筆記————27、檢視函式Solid筆記函式
- Solidity語言學習筆記————3、Remix的基本使用Solid筆記REM
- Solidity語言學習筆記————15、結構體StructSolid筆記結構體Struct
- Solidity語言學習筆記————18、字串和函式Solid筆記字串函式
- Solidity語言學習筆記————14、左值運算子Solid筆記
- Solidity語言學習筆記————9、左值運算子Solid筆記
- Solidity語言學習筆記————17、原始檔對映Solid筆記
- Solidity語言學習筆記————5、全域性變數Solid筆記變數
- Solidity語言學習筆記————2、使用編譯器Solid筆記編譯
- Solidity語言學習筆記————30、函式過載Solid筆記函式
- Solidity語言學習筆記————35、抽象合約和介面Solid筆記抽象
- Solidity語言學習筆記————26、Assert, Require, Revert 和 ExceptionsSolid筆記UIException
- Solidity語言學習筆記————22、可見性和GettersSolid筆記
- Solidity語言學習筆記————20、函式修飾符Solid筆記函式
- Solidity語言學習筆記————23、函式呼叫和賦值Solid筆記函式賦值
- Solidity語言學習筆記————24、輸入輸出引數Solid筆記
- Solidity語言學習筆記————13、固定大小位元組陣列Solid筆記陣列
- Solidity語言學習筆記————14、動態位元組陣列Solid筆記陣列
- Solidity語言學習筆記————8、運算子優先順序Solid筆記
- Solidity語言學習筆記————44、合約的後設資料Solid筆記
- Solidity語言學習筆記————7、單位和全域性變數Solid筆記變數