理解Go 常數中的整數溢位
在Go 程式設計中,嘗試將過大的值放入整數常數可能會導致編譯錯誤。考慮以下程式碼片段:
<code class="go">userid := 12345 did := (userid & ^(0xFFFF << 48))</code>
編譯此程式碼時,您可能會遇到以下錯誤:
./xxxx.go:511: constant -18446462598732840961 overflows int
此錯誤源自於 Go 中常數表達式的無型別性質。
無型別常數和整數溢位
在給定的程式碼中,常數^(0xFFFF
解決溢位問題
要避免此溢位錯誤,明確鍵入非類型化常數非常重要。在這種情況下,您可以改用以下程式碼:
<code class="go">userid := 12345 did := (userid & (uint64(1<<48) - 1))</code>
透過使用uint64(1
以上是為什麼 Go 在位元運算中使用無類型常數時會拋出溢位錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!