Solidity
為什麼以及何時使用 uint8 而不是 uint?
據我所知,比(或它們相同)
uint8
花費更多的汽油。uint256``uint
假設我的變數不能大於 100,並且我已經用
if
語句檢查了它。我看到了許多
uint8
使用範例,而不是uint
他們說*“優化”。如果uint8
成本比汽油多,製造它uint256
不是“低效”*uint8
嗎?
如果你只有一個
uint8
,那麼是的,它會比使用 a 花費更多的氣體,uint256
因為它的數據需要填充以適應需要 256 位的*單詞。*因此,它需要相同數量的儲存空間,但由於填充而成本更高。但是當你有多個並排
uint8
聲明時,魔法就會發生。在這種情況下,它們可以儲存在一個字槽內,因此佔用的空間更少。因此,理論上您可以將256 / 8 = 32
這些儲存在一個插槽中,但可能會有一些成本,而且沒有那麼多合適 - 不確定。當我說彼此相鄰聲明時,這意味著如果它們之間存在例如它們,則它們不能被打包
address
。因此,僅當您在同一個插槽中儲存更多的尺寸時,使用
uint
小於的尺寸256
才有用 - 否則它只會花費超過uint256
.您可以在此處閱讀有關可變包裝的更多資訊。