Solidity

不允許從“int_const -1”到“uint128”的顯式類型轉換

  • November 27, 2021

我正在使用 sol 0.8.0 進行編譯,以下行在標題中產生錯誤:

uint256 public constant MASK = uint128(~0);

錯誤:

Explicit type conversion not allowed from "int_const -1" to "uint128".

將變數更改為此:

uint256 public constant MASK = ~0;

錯誤變為:

Type int_const -1 is not implicitly convertible to expected type uint256. Cannot implicitly convert signed literal to unsigned type.

將其更改為:

uint256 public constant MASK = type(uint128).max;

0.8.0 中的新限制

從堅固>0.8.0

僅當文字位於和T之間時,才允許在文字和整數類型之間進行顯式轉換。特別是,用 替換 的用法。type(T).min``type(T).max``uint(-1)``type(uint).max

引用自:https://ethereum.stackexchange.com/questions/94520