当前位置:首页>区块链文章>区块链引流>技术入门 | Solidity编程语言 : 布尔型和整型

技术入门 | Solidity编程语言 : 布尔型和整型

1、HelloWorl[db:标签]

智能合约就像是一份合同一样,你书写的每个代码都是合同的内容。所以合约一经部署,合约内容就无法修改,好比你和别人签苹写了合同之后,是没法再修改的。这也是正是基于区块链不可篡改的特性。 在通常的编程语言中,一般会使用标准输出来打印“Hello World”,Solidity作为一门智能合约编程语言,是有别与一般的编程语言,他是基于以太坊,并且是用来编写“合约”的。所以这里不再使用“HelloWorld”作为示例,而是使用Solidity官网中的一个入门示例。

pragma solidity >=0.4.0 <0.6.0;contract SimpleStorage {    uint storedData;    function set(uint x) public {        storedData = x;    }    function get() public view returns (uint) {        return storedData;    }}

以上代码就是一个使用Solidity编写的名为SimpleStorage的合约。

1.1 第一行代码是用来指定Solidity的语言版本,pragma solidity是固定格式,后边加上版本号,版本号通过范围来确定的,即大等于0.4.0,小于0.6.0。在网上会经常看到^0.4.21这样的书写方式,这种格式是支持在0.5.2及之前的版本。比如在remix-ide环境中编写pragma solidity ^0.5.3,则会提示编译错误:browser/Untitled.sol:3:1: ParserError: Source file requires different compiler version (current compiler is 0.5.2+commit.1df8f40c.Emscripten.clang – note that nightly builds are considered to be strictly less than the released version

1.2 第二代码创建名为SimpleStorage的合约。contract 是关键字,SimpleStorage为合约名称。这个类似于java的类定义一样,class Person{},比较容易理解。

1.3 第三行代码定了一个无符号整数storedData,这个状态变量将会保存在区块链上,好比写入数据库进行了持久化,什么时候都可以进行读取。

1.4 定义set方法,对状态变量storedData进行赋值,其中public是关键定,修饰set方法可以被合约外部调用。

1.5 定义get方法,返回状态变量storedData的值,对于返回值的书写稍有不同,关键字是returns,而不是return,另外返回值可以是多个,使用圆括号包起来。

这就是一个简单的Solidity编写的合约了,有编程经验的人很容易理解。

2、布尔型和整型

2.1 布尔型

bool类型同其他语言一样,取值为true或false, 其运算操作有!、||、&&、!=、==,注意这里并没有|、&

pragma solidity >=0.4.22 <0.6.0;contract EgBool {    bool isOne;    bool isTwo;    function operation() public {        isOne = true;        if (isOne){            // dosomething        }

if (!isOne){ // dosomething }

if (isOne || isTwo ){ // dosomething }

if (isOne && isTwo ){ // dosomething }

if (isOne != isTwo ){ // dosomething }

if (isOne == isTwo ){ // dosomething } }}

2.2 整型

整型包含无符号uint和有符号int两种类型,每种类型有多种长度,比如uint8、uint64、int128等等,长度范围是8至256,相差8个长度,8,16,24,32…256。其中uint和uint256一样,int和int256一样。运算操作有比较、位操作和算术操作三种。

  • 比较操作:<= , < , == , != , >= , >。
  • 位操作: &(与) , |(或) , ^ (异或), ~ (非)。
  • 算术操作:+ , – , * , /, % , (乘方,求幂) ,<<(左移) , >>(右移)其中左移和右移操作,a<<b,可以理解为a乘以2的b次方,表示为a*2b,同理右移a>>b表示为a/2**b。
pragma solidity >=0.4.22 <0.6.0;contract EgInt {    int i = 0;    int8 i8 = -1;    int256 i256 = 256;

uint ui = 0; uint ui8 = 1; uint256 ui256 = 256;

function operation() public { if ( i < i8 || i <= i8 || i == i8 || i != i8 || i > i8 || i >= i8 ){ //dosomeing }

int a; int b; int c; c = a & b; c = a | b; c = a ^ b; c = ~ b;

c = a + b; c = a - b; c = a * b; c = a / b; c = a % b; c = a << b; c = a >> b;

//c = a**b; uint d; uint e; uint f; f = d**e; //c = d**e; }}

 

注意:

  1. 有符号整数是不能够使用\”**\”操作。
  2. 有符号和无符号不能进行类型转换,不能同时参数运算,比如c = d + e。

 

作者:感谢蓝莲花团队整理供稿。

注:如有问题请在下方留言联系我们技术社群。

汪晓明博客:http://wangxiaoming.com/

汪晓明:HPB芯链创始人,巴比特专栏作家。十余年金融大数据、区块链技术开发经验,曾参与创建银联大数据。主创区块链教学视频节目《明说》30多期,编写了《以太坊官网文档中文版》,并作为主要作者编写了《区块链开发指南》,在中国区块链社区以ID“蓝莲花”知名。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
区块链引流

历时9个月,蚂蚁区块链创新大赛在云栖大会落幕,这3个项目瓜分180万元奖金

2021-11-12 23:04:36

区块链引流

Cosmos升级遇故障,大量节点应对不及时恐引发扣币

2021-11-12 23:04:38

重要说明

本站资源大多来自网络,如有侵犯你的权益请联系管理员 区块链Bi站  或给邮箱发送邮件834379394@qq.com 我们会第一时间进行审核删除。 站内资源为网友个人学习或测试研究使用,未经原版权作者许可,禁止用于任何商业途径!请在下载24小时内删除!


如果你遇到支付完成,找不到下载链接,或者不能下载,或者解压失败,先不要忙,加客服主的QQ:834379394 (客服有可能有事情或者在睡觉不能及时的回复您,QQ留言后,请耐心等待即可!)

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索