Solidity
如何使用安全數學添加三個數字?
我知道這聽起來可能很明顯,但你永遠不能太確定。
假設我有三個數字 5、7 和 8。我可以像這樣添加它們嗎:
using SafeMath for uint256; 5.add(7.add(8)); // or even like so 5.add(7).add(8); // or 5.add(7 + 8);
使用其中任何一個是否有任何風險(溢出或其他任何風險)?
寫作
5.add(7)
是add(5, 7)
.所以第一個表達式
5.add(7.add(8))
是add(5, add(7, 8))
,第二個5.add(7).add(8)
是add(add(5, 7), 8)
。在 SafeMath 的特殊情況下,
add
兩個表達式都將得出相同的結果。對於其他功能sub
,請div
確保它們的順序正確。最後一個表達式
5.add(7 + 8)
與其他表達式不同,因為7 + 8
從不檢查溢出。在這裡沒關係,因為它們是小數字,但是如果您使用變數,它可能會中斷。