网站首页 > 开源技术 正文
var在Go语言中比较常用,可以自动推导数据类型,然而,在以太坊的Solidity智能合约中确是坑很深,毕竟Solidity年龄较短,bug较多。
solidity语言中默认var创建的数值类型是uint8即范围在0-255之间。
for (var i = 0; i < 300; i++)
{
}
使用如上所述for循环时,create合约会显示一直pending,且逐渐卡死,因为i的值永远不可能达到300,在到255时,即二进制1111111,再循环又变成0,在0-255之间进行循环。这是一个很致命的坑,没有报错,一切OK,就是死循环无解。
下面进行一个测试:
pragma solidity ^0.4.24;
contract Test{
function f() view returns (uint, uint)
{
uint count = 0;
for (var i = 0; i < 300; i++)
{
count++;
if(count >= 1000)
{
break;
}
}
return (count, i);
}
}
结果:
显然,我们发现,for循环的上限为300,而count竟然累加至1000,说明i的值一直没有达到300。
猜你喜欢
- 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语言并重新验证
欢迎 你 发表评论:
- 12-20googleplay安卓版(googleplaystore 安卓下载)
- 12-20微软最新补丁(微软最新补丁导致固态有问题)
- 12-20打印机价格一览表(普通打印机多少钱一台)
- 12-20五笔输入法教程软件(五笔输入法初学者教程软件)
- 12-20win7如何给电脑分区(win7分区怎么分区)
- 12-20电脑输入法不见了怎么调出来快捷键
- 12-20电脑k歌软件哪个最好(电脑k歌软件排行)
- 12-20电脑突然黑屏死机(电脑突然黑屏死机风扇狂转)
- 最近发表
- 标签列表
-
- 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)

本文暂时没有评论,来添加一个吧(●'◡'●)