二维码

3.4 什么是不同的数据类型 - 数据结构 - 机器学习

1110 人阅读 | 时间:2021年01月15日 01:12
3.4 什么是不同的数据类型 - 数据结构 - 机器学习 #daohang ul li t,.reed .riqi,a.shangg,a.xiatt,a.shangg:hover,a.xiatt:hover,a.shang,a.xiat,a.shang:hover,a.xiat:hover,.reed-pinglun-anniu,span.now-page,#daohangs-around,#caidan-tubiao,#daohangs,#daohangs li,#btnPost{background-color:#D10B04;} .dinglanyou1 h3{border-bottom:3px solid #D10B04;} #dibuer{border-top:2px solid #D10B04;}.cebianlan .rongqi h3{border-bottom:1px solid #D10B04;} #edtSearch{border:1px solid #D10B04;} #daohang .zuo ul li{border-right:1px solid #;} #daohang ul li t a{border-top:1px solid #;border-right:1px solid #D10B04;} #daohang ul li t a:hover{border-right:1px solid #;} #daohang .you ul li a:hover,#daohang .zuo ul li a:hover,.reed-pinglun-anniu:hover{background-color:#;} a:hover,.reed h6 a:hover,#dibuer a:hover,.reed .riqiding,.cebianlan .rongqi li a:hover,#pinglun-liebiao ul.fubens li.depth-1 dl dd span.shu a,#pinglun-liebiao ul.fubens li.depth-1 dl dd span.huifuliuyan a:hover,.reed-biaoti h6 span{color:#D10B04;} .reed .kan a{color:#0A0AF5;}.reed .kan a:hover{color:#D10101;} @media screen and (max-width:1492px){a.shang,a.xiat{background:none;} a.xiat:hover,a.shang:hover{background-color:#f9f9f9;background-image:none;text-decoration:none;}} var _hmt = _hmt || [];(function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?b19db5ba3b437a9e8698d2bc8fc64334"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s);})(); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?b19db5ba3b437a9e8698d2bc8fc64334"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?2d748c9763cfc72fb7d1ccab29f0770d"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?f6d451f3f1be23f3abf240c64c469c1b"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })();

当前位置:首页 » 区块链精品文章 » 正文

(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646201", container: s }); })();
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646162", container: s }); })();

3.4 什么是不同的数据类型

1239 人参与  2018年09月17日 18:07  分类 : 区块链精品文章  评论

Solidity是一种静态类型语言,变量存储的数据类型需要预先定义。所有变量默认值都是0。在Solidity中,变量是有函数作用范围的,也就是说,在函数中任何地方声明的变量将对整个函数存在适用范围,无论它是在哪里声明的。

现在让我们看看Solidity提供的不同数据类型:

·最简单的数据类型是布尔值,可以是true或者false。

·uint8,uint16,uint24,…,uint256分别用于存储无符号的8位,16位,24 位,…,256位整数。同理,int8,int16,…,int256分别用于存储8位,16位,24位,…,256位整数。uint和int是 uint256和int256的别名。类似于uint和int,ufixed和fixed代表分数。 ufixed0x8,ufixed0x16,…,ufixed0x256分别用于存储未签名的8位,16位,24位,…,256位分数。同 理,fixed0x8,fixed0x16,…,fixed0x256分别用于存储8位,16位,24位,…,256位分数。如果一个数字超过256位, 则使用256位数据类型存储该数字的近似值。

·address可以用于存储最大20字节的值(十六进制表示)。它用于存储以太坊地址。address类型有两个属 性:balance和send。balance用于检测地址余额,send用于向地址发送以太币。send方法拿出需要转账那些数量的wei,并根据转账 是否成功返回true或者false。wei从调用send方法的合约中扣除。用户可以在Solidity中使用0x前缀给变量分配一个十六进制的数值。

3.4.1 数组类型

Solidity支持generic和byte两种数组类型。它们支持固定长度和动态长度两种数组,也支持多维数组。

bytes1,bytes 2,bytes3,……,bytes32是字节数组的类型。byte是bytes 1的别名。

下面给出了generic数组语法的一个示例:

3.4 什么是不同的数据类型 - 数据结构 - 机器学习

关于数组的重要内容如下:

·数组还有length属性,用于发现数组的长度。用户还可以给length属性分配一个值,以改变数组大小,但不可以在内存中改变数组大小,也不可以改变非动态数组大小。

·如果想访问动态数组的未设置索引(unset index),会抛出异常。

记住:array、structs和map都不可以用作函数参数,也不可以用作函数返回值。

3.4.2 字符串类型

在Solidity中,有两种方法创建字符串:使用bytes和string。bytes用于创建原始字符串,而string用于创建UTF-8字符串。字符串长度总是动态的。

下面给出了字符串语法的一个示例:

3.4 什么是不同的数据类型 - 数据结构 - 机器学习

3.4.3 结构类型

Solidity还支持结构类型(struct)。下面给出了struct语法的一个示例:

3.4 什么是不同的数据类型 - 数据结构 - 机器学习

注意:函数参数不可以是结构类型,且函数不可以返回结构类型。

3.4.4 枚举类型

Solidity还支持枚举类型(enum)。下面给出了enum语法的一个示例:

3.4 什么是不同的数据类型 - 数据结构 - 机器学习

3.4.5 mapping类型

mapping数据类型是一个哈希表。mapping类型只可以存在于storage中,不存在于memory中,因 此它们是作为状态变量声明的。可以认为mapping类型包含key/value对,不是实际存储key,而是存储key的keccak256哈希,用于 查询value。mapping类型没有长度。mapping不可以被分配给另一个mapping。

下面给出了一个创建和使用mapping的示例:

3.4 什么是不同的数据类型 - 数据结构 - 机器学习

记住:如果想访问mapping中不存在的key,返回的value均为0。

3.4.6 delete操作符

delete操作符可以用于任何变量,将其设置成默认值。默认值均为0。

如果对动态数组使用delete操作符,则删除所有元素,其长度变为0。如果对静态数组使用delete操作符,则重置所有索引。还可以通过对特定索引位置使用delete来重置索引。

如果对map类型使用delete操作符,什么都不会发生。但是如果对map类型的一个键使用delete操作符,则会删除与该键相关的值。

下面给出了delete操作符的一个示例:

3.4 什么是不同的数据类型 - 数据结构 - 机器学习

3.4 什么是不同的数据类型 - 数据结构 - 机器学习

3.4.7 基本类型之间的转换

除了数组类型、字符串类型、结构类型、枚举类型和map类型外,其他类型均称为基本类型。

如果把一个操作符应用于不同的类型,编译器将尝试把一个操作数隐式转换为另一种类型。通常来说,如果没有语义信息丢 失,值和类型之间可以进行隐式转换:uint8可转换为uint16,int128可转换为int256,但是int8不可转换为uint256(因为 uint256不能存储,例如-1)。此外,无符号整数可以转换成同等大小或者更大的字节,但是反之则不然。任何可以转换成uint160的类型都可以转 换成地址。

Solidity也支持显式转换。所以,如果编译器不允许在两种数据类型之间隐式转换,则可以进行显式转换。建议尽量避免显式转换,因为可能返回难以预料的结果。

来看一个例子:

3.4 什么是不同的数据类型 - 数据结构 - 机器学习

这里是将uint32类型显式转换为uint16,也就是说,把较大类型转换为较小类型,因此高位被砍掉了。

3.4.8 使用var

Solidity提供了用于声明变量的var关键字。变量类型根据分配给它的第一个值来动态确定。一旦分配了值,类型就固定了,所以如果给它指定另一个类型,将引起类型转换。示例如下:

3.4 什么是不同的数据类型 - 数据结构 - 机器学习

记住:在定义数组array和map时不能使用var。var也不能用于定义函数参数和状态变量。


来源:我是码农,转载请保留出处和链接!

本文链接:http://www.54manong.com/?id=580

(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646208", container: s }); })();
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646147", container: s }); })();
window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdPic":"","bdStyle":"0","bdSize":"16"},"share":{},"image":{"viewList":["qzone","tsina","tqq","renren","weixin"],"viewText":"分享到:","viewSize":"16"},"selectShare":{"bdContainerClass":null,"bdSelectMiniList":["qzone","tsina","tqq","renren","weixin"]}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];
区块链是什么  

微信号:qq444848023    QQ号:444848023

加入【我是码农】QQ群:864689844(加群验证:我是码农)

<< 上一篇 下一篇 >>
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646186", container: s }); })();
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646175", container: s }); })();
搜索

网站分类

标签列表

最近发表

    (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https'){ bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else{ bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();

全站首页 | 数据结构 | 区块链| 大数据 | 机器学习 | 物联网和云计算 | 面试笔试

var cnzz_protocol = (("https:" == document.location.protocol) ? "https://" : "http://");document.write(unescape("%3Cspan id='cnzz_stat_icon_1276413723'%3E%3C/span%3E%3Cscript src='" + cnzz_protocol + "s23.cnzz.com/z_stat.php%3Fid%3D1276413723%26show%3Dpic1' type='text/javascript'%3E%3C/script%3E"));本站资源大部分来自互联网,版权归原作者所有!

jQuery(document).ready(function($){ /* prepend menu icon */ $('#daohangs-around').prepend('
'); /* toggle nav */ $("#caidan-tubiao").on("click", function(){ $("#daohangs").slideToggle(); $(this).toggleClass("active"); }); });

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

©著作权归作者所有:来自ZhiKuGroup博客作者没文化的原创作品,如需转载,请注明出处,否则将追究法律责任 来源:ZhiKuGroup博客,欢迎分享。

评论专区
  • 昵 称必填
  • 邮 箱选填
  • 网 址选填
◎已有 0 人评论
搜索
作者介绍
30天热门
×
×
关闭广告
关闭广告
本站会员尊享VIP特权,现在就加入我们吧!登录注册×
»
会员登录
新用户注册
×
会员注册
已有账号登录
×