网站首页 > 开源技术 正文
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语言并重新验证
欢迎 你 发表评论:
- 11-22华为电脑wifi开关在哪(华为电脑wifi连接上不能上网怎么办)
- 11-22管理开机启动项(开机启动项管理win10)
- 11-222025动态壁纸图片(2020动态手机壁纸)
- 11-22电脑的设备管理器在哪里打开
- 11-22windows查看设备序列号(查询设备序列号win7)
- 11-22nod32 激活码(nod32 激活码 3用户)
- 11-22联想m7400打印机驱动安装教程
- 11-22插上系统盘怎么装系统(插了系统u盘怎么用)
- 最近发表
- 标签列表
-
- 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)

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