网站首页 > 开源技术 正文
上次我们说到了修饰符和view,pure函数,今天我们说一下类型转换的问题。
在我们编程中有时候需要变换数据类型,例如:
uint8 a =7;
uint b =9;
// 将会抛出错误,因为 a * b 返回 uint, 而不是 uint8:
uint8 c = a * b;
// 我们需要将 b 转换为 uint8:
uint8 c = a *uint8(b);
如上,a*b返回的类型是uint,但是当我们尝试使用uint8类型接收时,就会造成潜在的错误,如果把他的数据类型转换为uint8,就可以,编译器也不会报错。
既然说到这里我们就来说一下uint8,uint16,uint32……等,我们之前说过uint是uint256的别名使用uint就是使用uint256。
uint8,uint16,uint32等都是uint的变种,通常情况下我们不会考虑使用uint的变种,因为无论如何定义uint的大小,Solidity为它保留256位的存储空间,例如使用uint8而不是uint不会为你节省任何gas,除非把uint绑定到struct中,如果一个struct中有多个uint打包在一起,从而占用较少的存储空间,当uint定义在一个struct中的时候尽量使用最小的整数子类型,以节约空间,并且将同类型变量放在一起,既:在struct中将变量按照类型依次放置,这样Solidity可以将存储空间最小化。例如:
struct Demo{
uint a;
uint b;
uint8 c;
uint8 d;
uint16 e;
uint16 f;
}
将同类型变量放在一起按照类型依次放置,以上是正确的方式,下面看一个错误的作为对比。
struct Demo2{
uint a;
uint8 b;
uint c;
uint16 d;
uint8 e;
uint32 f;
}
Demo2结构体类型不是依次排序,占用空间比Demo要大,所以我们在写结构体时一定要按照同类型变量放在一起。
最后才是整篇文章的重点
有以下区块链开发技术需求的
记得要联系小氪
不要客气!!!
猜你喜欢
- 2024-09-30 「链块技术39期」以太坊智能合约语言(四):Solidity函数(上)
- 2024-09-30 学习 Solidity 智能合约开发 02:合约
- 2024-09-30 「干货」区块链技术分享:Solidity语言(七)
- 2024-09-30 Solidity的整数(solid size)
- 2024-09-30 了解Solidity语言基础知识(sol语言有哪些特点)
- 2024-09-30 solidity基本数据类型使用、主要关键字学习、address使用
- 2024-09-30 「链块技术36期」以太坊智能合约—Solidity概述和开发工具的使用
- 2024-09-30 区块链研究实验室 | 深入解析Solidity合约
- 2024-09-30 【干货】区块链技术分享:Solidity语言
- 2024-09-30 以太坊2.0进展:存款合约已经从Vyper重写为Solidity语言并重新验证
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)