欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Solidity類型有哪些

本篇內(nèi)容介紹了“Solidity類型有哪些”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

東乃網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)建站,東乃網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為東乃超過千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的東乃做網(wǎng)站的公司定做!

類型

Solidity是一種靜態(tài)類型語(yǔ)言,意味著每個(gè)變量(本地或狀態(tài)變量)需要在編譯時(shí)指定變量的類型(或至少可以推倒出類型)。Solidity提供了一些基本類型可以用來組合成復(fù)雜類型。

Solidity類型分為兩類:

  • 值類型(Value Type) - 變量在賦值或傳參時(shí),總是進(jìn)行值拷貝。

  • 引用類型(Reference Types)

值類型(Value Type)

值類型包含:

  • 布爾類型(Booleans)

  • 整型(Integers)

  • 定長(zhǎng)浮點(diǎn)型(Fixed Point Numbers)

  • 定長(zhǎng)字節(jié)數(shù)組(Fixed-size byte arrays)

  • 有理數(shù)和整型常量(Rational and Integer Literals)

  • 字符串常量(String literals)

  • 十六進(jìn)制常量(Hexadecimal literals)

  • 枚舉(Enums)

  • 函數(shù)類型(Function Types)

  • 地址類型(Address)

  • 地址常量(Address Literals)

函數(shù)類型及地址類型(Address)有單獨(dú)的博文,請(qǐng)點(diǎn)擊查看。

布爾類型(Booleans)

布爾(bool):可能的取值為常量值truefalse

布爾類型支持的運(yùn)算符有:

  • !邏輯非

  • && 邏輯與

  • || 邏輯或

  • == 等于

  • != 不等于

注意:運(yùn)算符**&&||**是短路運(yùn)算符,如f(x)||g(y),當(dāng)f(x)為真時(shí),則不會(huì)繼續(xù)執(zhí)行g(shù)(y)。

整型(Integers)

int/uint: 表示有符號(hào)和無(wú)符號(hào)不同位數(shù)整數(shù)。支持關(guān)鍵字uint8uint256(以8步進(jìn)), uintint默認(rèn)對(duì)應(yīng)的是 uint256int256

支持的運(yùn)算符:

  • 比較運(yùn)算符: <=, < , ==, !=, >=, > (返回布爾值:true 或 false)

  • 位操作符: &,|,^(異或),~(位取反)

  • 算術(shù)操作符:+,-,一元運(yùn)算-,一元運(yùn)算+,*,/, %(取余數(shù)), ***(冪), << (左移位), >>(右移位)

說明:

  1. 整數(shù)除法總是截?cái)嗟模绻\(yùn)算符是字面量(字面量稍后講),則不會(huì)截?cái)唷?/p>

  2. 整數(shù)除0會(huì)拋異常。

  3. 移位運(yùn)算的結(jié)果的正負(fù)取決于操作符左邊的數(shù)。x << y 和 x * 2***y 是相等, x >> y 和 x / 2**y 是相等的。

  4. 不能進(jìn)行負(fù)移位,即操作符右邊的數(shù)不可以為負(fù)數(shù),否則會(huì)拋出運(yùn)行時(shí)異常。

注意:Solidity中,右移位是和除等價(jià)的,因此右移位一個(gè)負(fù)數(shù),向下取整時(shí)會(huì)為0,而不像其他語(yǔ)言里為無(wú)限負(fù)小數(shù)。

定長(zhǎng)浮點(diǎn)型(Fixed Point Numbers)

注意:定長(zhǎng)浮點(diǎn)型 Solidity(發(fā)文時(shí))還不完全支持,它可以用來聲明變量,但不可以用來賦值。

fixed/ufixed: 表示有符號(hào)和無(wú)符號(hào)的固定位浮點(diǎn)數(shù)。關(guān)鍵字為ufixedMxNufixedMxNM表示這個(gè)類型要占用的位數(shù),以8步進(jìn),可為8到256位。 N表示小數(shù)點(diǎn)的個(gè)數(shù),可為0到80之間

支持的運(yùn)算符:

  • 比較運(yùn)算符: <=, < , ==, !=, >=, > (返回布爾值:true 或 false)

  • 算術(shù)操作符:+,-,一元運(yùn)算-,一元運(yùn)算+,*,/, %(取余數(shù)) 注意:它和大多數(shù)語(yǔ)言的float和double不一樣,M是表示整個(gè)數(shù)占用的固定位數(shù),包含整數(shù)部分和小數(shù)部分。因此用一個(gè)小位數(shù)(M較小)來表示一個(gè)浮點(diǎn)數(shù)時(shí),小數(shù)部分會(huì)幾乎占用整個(gè)空間。

定長(zhǎng)字節(jié)數(shù)組(Fixed-size byte arrays)

關(guān)鍵字有:bytes1, bytes2, bytes3, ..., bytes32。(以步長(zhǎng)1遞增) byte代表bytes1。

支持的運(yùn)算符:

  • 比較符: <=, <, ==, !=, >=, > (返回bool)

  • 位操作符: &, |, ^ (按位異或),~(按位取反), << (左移位), >> (右移位)

  • 索引(下標(biāo))訪問: 如果x是bytesI,當(dāng)0 <= k < I ,則x[k]返回第k個(gè)字節(jié)(只讀)。

移位運(yùn)算和整數(shù)類似,移位運(yùn)算的結(jié)果的正負(fù)取決于操作符左邊的數(shù),且不能進(jìn)行負(fù)移位。 如可以-5<<1, 不可以5<<-1

成員變量: .length:表示這個(gè)字節(jié)數(shù)組的長(zhǎng)度(只讀)。

變長(zhǎng)(動(dòng)態(tài)分配大小)字節(jié)數(shù)組(Dynamically-sized byte array)

  • bytes:動(dòng)態(tài)分配大小字節(jié)數(shù)組, 參見Arrays,不是值類型!

  • string:動(dòng)態(tài)分配大小UTF8編碼的字符類型,參看Arrays。不是值類型!

根據(jù)經(jīng)驗(yàn): bytes用來存儲(chǔ)任意長(zhǎng)度的字節(jié)數(shù)據(jù),string用來存儲(chǔ)任意長(zhǎng)度的(UTF-8編碼)的字符串?dāng)?shù)據(jù)。 如果長(zhǎng)度可以確定,盡量使用定長(zhǎng)的如byte1到byte32中的一個(gè),因?yàn)檫@樣更省空間。

有理數(shù)和整型常量(Rational and Integer Literals)

也有人把Literals翻譯為字面量

整型常量是有一系列0-9的數(shù)字組成,10進(jìn)制表示,比如:8進(jìn)制是不存在的,前置0在Solidity中是無(wú)效的。

10進(jìn)制小數(shù)常量(Decimal fraction literals)帶了一個(gè)**., 在.**的兩邊至少有一個(gè)數(shù)字,有效的表示如:1., .11.3.

科學(xué)符號(hào)也支持,基數(shù)可以是小數(shù),指數(shù)必須是整數(shù), 有效的表示如: 2e10, -2e10, 2e-10, 2.5e1

數(shù)字常量表達(dá)式本身支持任意精度,也就是可以不會(huì)運(yùn)算溢出,或除法截?cái)唷5?dāng)它被轉(zhuǎn)換成對(duì)應(yīng)的非常量類型,或者將他們與非常量進(jìn)行運(yùn)算,則不能保證精度了。 如:(2*800 + 1) - 2*800的結(jié)果為1(uint8整類) ,盡管中間結(jié)果已經(jīng)超過計(jì)算機(jī)字長(zhǎng)。另外:.5 * 8的結(jié)果是4,盡管有非整形參與了運(yùn)算。

只要操作數(shù)是整形,整型支持的運(yùn)算符都適用于整型常量表達(dá)式。 如果兩個(gè)操作數(shù)是小數(shù),則不允許進(jìn)行位運(yùn)算,指數(shù)也不能是小數(shù)。

注意: Solidity對(duì)每一個(gè)有理數(shù)都有一個(gè)數(shù)值常量類型。整數(shù)常量和有理數(shù)常量從屬于數(shù)字常量。所有的數(shù)字常表達(dá)式的結(jié)果都屬于數(shù)字常量。所以1 + 2和2 + 1都屬于同樣的有理數(shù)的數(shù)字常量3

警告: 整數(shù)常量除法,在早期的版本中是被截?cái)嗟模F(xiàn)在可以被轉(zhuǎn)為有理數(shù)了,如5/2的值為 2.5

注意: 數(shù)字常量表達(dá)式,一旦其中含有常量表達(dá)式,它就會(huì)被轉(zhuǎn)為一個(gè)非常量類型。下面代碼中表達(dá)式的結(jié)果將會(huì)被認(rèn)為是一個(gè)有理數(shù):

uint128 a = 1;
uint128 b = 2.5 + a + 0.5;

上述代碼編譯不能通過,因?yàn)閎會(huì)被編譯器認(rèn)為是小數(shù)型。

字符串常量

字符串常量是指由單引號(hào),或雙引號(hào)引起來的字符串 ("foo" or 'bar')。字符串并不像C語(yǔ)言,包含結(jié)束符,"foo"這個(gè)字符串大小僅為三個(gè)字節(jié)。和整數(shù)常量一樣,字符串的長(zhǎng)度類型可以是變長(zhǎng)的。字符串可以隱式的轉(zhuǎn)換為byte1,...byte32 如果適合,也會(huì)轉(zhuǎn)為bytes或string。

字符串常量支持轉(zhuǎn)義字符,比如\n,\xNN,\uNNNN。其中\(zhòng)xNN表示16進(jìn)制值,最終轉(zhuǎn)換合適的字節(jié)。而\uNNNN表示Unicode編碼值,最終會(huì)轉(zhuǎn)換為UTF8的序列。

十六進(jìn)制常量(Hexadecimal literals)

十六進(jìn)制常量,以關(guān)鍵字hex打頭,后面緊跟用單或雙引號(hào)包裹的字符串,內(nèi)容是十六進(jìn)制字符串,如hex"001122ff"。 它的值會(huì)用二進(jìn)制來表示。

十六進(jìn)制常量和字符串常量類似,也可以轉(zhuǎn)換為字節(jié)數(shù)組。

枚舉(Enums)

在Solidity中,枚舉可以用來自定義類型。它可以顯示的轉(zhuǎn)換與整數(shù)進(jìn)行轉(zhuǎn)換,但不能進(jìn)行隱式轉(zhuǎn)換。顯示的轉(zhuǎn)換會(huì)在運(yùn)行時(shí)檢查數(shù)值范圍,如果不匹配,將會(huì)引起異常。枚舉類型應(yīng)至少有一名成員。下面是一個(gè)枚舉的例子:

pragma solidity ^0.4.0;

contract test {
    enum ActionChoices { GoLeft, GoRight, GoStraight, SitStill }
    ActionChoices choice;
    ActionChoices constant defaultChoice = ActionChoices.GoStraight;

    function setGoStraight() {
        choice = ActionChoices.GoStraight;
    }

    // Since enum types are not part of the ABI, the signature of "getChoice"
    // will automatically be changed to "getChoice() returns (uint8)"
    // for all matters external to Solidity. The integer type used is just
    // large enough to hold all enum values, i.e. if you have more values,
    // `uint16` will be used and so on.
    function getChoice() returns (ActionChoices) {
        return choice;
    }

    function getDefaultChoice() returns (uint) {
        return uint(defaultChoice);
    }
}

“Solidity類型有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

網(wǎng)頁(yè)名稱:Solidity類型有哪些
網(wǎng)頁(yè)地址:http://chinadenli.net/article48/phdeep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站關(guān)鍵詞優(yōu)化做網(wǎng)站面包屑導(dǎo)航用戶體驗(yàn)自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)