如何在Solidity中将变量b声明为负数值?
Solidity 负数声明操作说明
只有带符号整数类型(int 系列,包含 int8、int16、int256 等)支持存储负数,无符号整数 uint 系列不支持负数。声明负数的操作非常简单,直接在数值前添加减号即可。
你提供的示例代码中a - -b的写法实际等价于a + b(负负得正),如果是要给变量声明负数初始值,参考修正后的代码:
pragma solidity ^0.8.4; contract Contract { // 声明int8类型变量并赋值为负数 int8 public a = -10; int8 public b = -2; // 此处计算逻辑为 a 减 负b,等价于 -10 + 2,最终值为 -8 int16 public difference = a - -b; }
使用注意事项
- 注意对应类型的取值范围,比如
int8的取值范围是-128 ~ 127,赋值负数时不要超出范围,Solidity 0.8+ 版本默认开启整数溢出检查,越界会直接触发交易回滚。 - 禁止给
uint类型变量赋值负数,该操作会在编译阶段直接报错。 - 如果需要对运算结果取负,直接在表达式外层加负号即可,例如
int16 public negativeResult = -(a + b);
内容的提问来源于stack exchange,提问作者Demario B.
相关产品推荐
相关产品推荐

