Solidity

為什麼以及何時使用 uint8 而不是 uint?

  • October 19, 2022

據我所知,比(或它們相同)uint8花費更多的汽油。uint256``uint

假設我的變數不能大於 100,並且我已經用if語句檢查了它。

我看到了許多uint8使用範例,而不是uint他們說*“優化”。如果uint8成本比汽油多,製造它uint256不是“低效”*uint8嗎?

如果你只有一個uint8,那麼是的,它會比使用 a 花費更多的氣體,uint256因為它的數據需要填充以適應需要 256 位的*單詞。*因此,它需要相同數量的儲存空間,但由於填充而成本更高。

但是當你有多個並排uint8聲明時,魔法就會發生。在這種情況下,它們可以儲存在一個槽內,因此佔用的空間更少。因此,理論上您可以將256 / 8 = 32這些儲存在一個插槽中,但可能會有一些成本,而且沒有那麼多合適 - 不確定。

當我說彼此相鄰聲明時,這意味著如果它們之間存在例如它們,則它們不能被打包address

因此,僅當您在同一個插槽中儲存更多的尺寸時,使用uint小於的尺寸256才有用 - 否則它只會花費超過uint256.

您可以在此處閱讀有關可變包裝的更多資訊。

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