Solidity-变量和数据类型[基本类型]
在solidity语言中,变量和数据类型分为三类:基本类型(bool、int、address等),复合类型(array、struct、mapping等)和特殊类型(enum、function、modifier等)。下面我们来对”基本类型“部分进行详细学习。
基本类型
布尔类型(bool)
布尔类型(bool)占用1个字节的存储空间,即8个比特位,该类型只能取两个值:true和false。其中,0表示false,1表示true,但Solidity中的布尔类型与其他语言中的布尔类型略有不同,比如C语言中的布尔类型通常占用1个字节,但只有0表示false,而其他非零值都可以表示true。
bool _Bool; //未初始化的bool变量_Bool
bool _True = true; //初始化为true的bool变量_True
bool _False = false; //初始化为false的bool变量_False
Solidity中的布尔类型同样支持逻辑运算。
“与”运算(and)使用"&&"运算符,只有条件都为"true"的时候,结果才为"true",否则为"false"。
“或”运算(or)使用"||"运算符,至少有一个条件为"true"的时候,结果便为"true",否则为"false"。
”非“运算(not)使用"!"运算符,对bool值取反。
”等于“使用"==",”不等于“使用"!="。
//定义三个bool变量
bool _Bool1 = true;
bool _Bool2 = true;
bool _Bool3 = false;
//进行逻辑运算
bool _Bool4 = _Bool1 && _Bool2; //"与"运算,条件都为"true",结果为"true"
bool _Bool5 = _Bool1 && _Bool3; //"与"运算,有一条件为"false",结果为"true"
bool _Bool6 = _Bool1 && _Bool3; //"或"运算,至少有一个条件为"true",结果为"true"
bool _Bool7 = !_Bool1; //"非"运算,取反
bool _Bool8 = _Bool1 == _Bool2; //"等于",满足为"true"
bool _Bool9 = _Bool1 != _Bool3; //"不等于",满足为"true"
整型(int/uint)
在Solidity中,整数类型分为有符号整数和无符号整数,并且可以声明数值位数。
有符号整数型(int)
有符号整数型(int)可以表示正数和负数,在不声明类型长度的情况下,"int"默认长度为256位,也可以指定位数,如:int8, int16, int 32, int256等。
无符号整数型(uint)
无符号整数型(uint)只能表示正数,在不声明类型长度的情况下,"uint"默认长度为256位,也可以指定位数,如:uint8, uint16, uint 32, uint256等。
需要注意的是,声明的位数范围是8位到256位,且必须是8的倍数,需要根据需求来设置范围用以节省存储空间。
//定义整型变量
int8 _Num1 = 10; //8位有符号整型,取值为10
int256 _Num2 = -10000; //256位有符号整型,取值为-10000
uint32 _Num3 = 100; //32位无符号整型,取值为100
uint128 _Num4 = 1000; //128位无符号整型,取值为1000
关于整型的运算符有:
算数运算符:+,-,*,/,%(取余),**(幂)。
//整型的运算
int256 _Number1 = 10;
int256 _Number2 = _Number1 + 100; //整数的基本运算
int256 _Number3 = _Number1 ** 2; //幂运算
int256 _Number4 = _Number1 % 3; //取余
比较运算符(计算返回布尔值):<=,<,==,!=,>=,>。
bool _NumBool = _Number1 < _Number2; //比较运算返回bool值
地址类型(address)
地址类型(address)是Solidity中用来表示以太坊地址的数据类型。用于处理以太坊交易,与其他合约交互和验证身份等功能。
该类型用20字节大小的空间存储以太坊地址,地址可以是外部账户地址,也可以是智能合约地址。地址类型具有成员,如"balance"和"transfer",前者返回地址中以太坊余额,后者将以太坊从当前地址发送到指定地址。(我们将在后面对地址类型进行详细的学习,这里只做简单说明。)
//地址类型
address _Address = 0x5B38Da6a701c568545dCfcB03FcB875f56beddC4; //初始化一个地址
uint256 _Balance = _Address.balance; //地址类型的成员"balance",返回该地址的以太坊余额
字节类型(byte/bytes)
在Solidity中,字节类型分为定长(byte,bytes8等)和不定长(bytes),前者属于数值类型,后者属于引用类型。字节类型的使用与数组类似,也称为字节数组。
//定长的字节数组
bytes16 _Bytes16 = "n0hackers"; //定义一个字节数组用于存储字符串"n0hackers"
bytes1 _Byte = bytes16[0]; //单独存储_Bytes16中的第一个字节的内容
Solidity-变量和数据类型[基本类型]的更多相关文章
- ECMAScript1.1 js书写位置 | 声明变量 | 基本数据类型 | 数据类型转换 | 操作符 | 布尔类型的隐式转换
js书写位置 由于在写css样式时使用的时双引号,所以我们在写js代码时建议使用单引号(‘’)! 行内式 <input type="button" value="点 ...
- 使用 JavaScript 中的变量、数据类型和运算符,计算出两个 number 类型的变量与一个 string 类型的变量的和,根据 string 类型处于运算符的不同位置得到不同的结果
查看本章节 查看作业目录 需求说明: 使用 JavaScript 中的变量.数据类型和运算符,计算出两个 number 类型的变量与一个 string 类型的变量的和,根据 string 类型处于运算 ...
- 以太坊智能合约 Solidity 的常用数据类型介绍
目录 目录 1.数组 1.1.对数组的增删改查操作. 2.String.Bytes.Mapping的使用 3.Enums 和 Structs 的简单应用 4.Ether 单位和 Time 单位 5.A ...
- JavaScript基础(一)之语法、变量、数据类型
1.JavaScript语法 ①区分大小写 ②弱类型变量 ③每行结尾分号可有可无 ④括号用于代码块 ⑤注释有两种方式(单行和多行注释) 2.JavaScrip变量 ①用Var声明,不要初始化 ②可以在 ...
- PHP变量和数据类型
编程语言可以分为三大类 1. 静态类型语言,比如:C/Java等,在静态语言类型中,类型的检查是在编译期(compile-time)确定的. 2. 动态语言类型,比如:PHP,python等各种脚本语 ...
- JS魔法堂:函数重载 之 获取变量的数据类型
Brief 有时我们需要根据入参的数据类型来决定调用哪个函数实现,就是说所谓的函数重载(function overloading).因为JS没有内置函数重载的特性,正好给机会我们思考和实现一套这样的机 ...
- JavaScript中的变量及数据类型
转自:http://blog.csdn.net/mygis2005/article/details/7375419 JavaScript是一种弱类型的语言,变量名.操作符和方法名都区分大小写. 1.变 ...
- Python变量、数据类型6
1.Python变量 变量,即代表某个value的名字. 变量的值存储在内存中,这意味着在创建变量时会在内存中开辟一个空间. !!!即值并没有保存在变量中,它们保存在计算机内存的深处,被变量引用.所以 ...
- Java 关键字、标识符、注释、常量与变量、数据类型,算术、赋值、比较、逻辑、位、三元运算符和流程控制、break、continue【3】
若有不正之处,请多多谅解并欢迎批评指正,不甚感激.请尊重作者劳动成果: 本文原创作者:pipi-changing本文原创出处:http://www.cnblogs.com/pipi-changing/ ...
- JS代码放置位置、变量与数据类型、运算符与逻辑表达运算符
内容简要: 1.JS代码放置位置的问题: 2.变量与数据类型: 3.运算符与逻辑表达式的运算符 我的位置 全局问题:为何在网页推荐位置(一般在<head></head>内部 ...
随机推荐
- flutter填坑之旅(有状态组件StatefulWidget)
今天我们来看看flutter的StatefulWidget(有状态组件),最常用就是app 主页的底部导航栏的应用 效果图 首页 关于 我的 statefull-widget-learn .dart ...
- R数据分析:多项式回归与响应面分析的理解与实操
今天给大家分享一个新的统计方法,叫做响应面分析,响应面分析是用来探究变量一致性假设的(Congruence hypotheses).本身是一个工程学方法,目前在组织行为学,管理,市场营销等等领域中使用 ...
- 尚医通day09-【用户平台搭建详细步骤】(内附源码)
页面预览 首页 医院详情 第01章-服务器端渲染和客户端渲染 1.搜索引擎优化 1.1.什么是搜索引擎优化 SEO 是网站为了获得更多的流量,对网站的结构及内容进行调整和优化,以便搜索引擎 (百度,g ...
- 使用 nuxt3 开发简约优雅的个人 blog
起因 很早前我就有过搭建个人博客的想法,但是我希望使用纯前端实现,这样就不需要付出额外的后端维护成本,维护成本又低,而且更加安全.网上也有很多博客框架但是也不符合我的需求,所以我使用了nuxt3 + ...
- Taurus .Net Core 微服务开源框架:Admin 插件【3】 - 指标统计管理
前言: 继上篇:Taurus .Net Core 微服务开源框架:Admin 插件[2] - 系统环境信息管理 本篇继续介绍下一个内容: 1.系统指标节点:Metric - API 界面 界面图如下: ...
- 查询mysql数据库目前有哪些链接 具体ip及数量
SELECT substring_index(host, ':',1) AS host_name,state,count(*) FROM information_schema.processlist ...
- P3574 [POI2014] FAR-FarmCraft 吐槽 + 题解
洛谷上面的题解写的真的不太好,有很多错误,我来谈谈自己的理解. 设 \(f[i]\) 表示以 \(i\) 为根节点的子树中(包括节点 \(i\))的所有人安装好游戏所需要的时间(与下面的 \(g[i] ...
- 一文了解io包中的discard类型
1. 引言 io.discard是Go语言标准库提供一个结构体类型,其在丢弃不需要的数据场景下非常好用.本文我们将从io.discard 类型的基本定义出发,讲述其基本使用和实现原理,接着简单描述 i ...
- 即构SDK12月迭代:新增多项质量回调,互动白板、云录制SDK同步更新
即构SDK12月迭代来啦,本月LiveRoom/AudioRoom SDK新增了端到端延迟质量回调.房间会话ID信息,便于在音视频通话.直播场景中进行时延.通话质量的评测.同时还优化了硬件设备权限变更 ...
- Hexo博客yilia主题添加背景音乐 (网易云音乐)
1. 打开网易云音乐首页,然后搜索你要添加的背景音乐 http://music.163.com/ 2. 搜索到歌曲点击生成外链播放器,进去下一个界面 3. 复制外链播放器的代码 打开yilia主题下的 ...