亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么在golang中打印出max int會導致編譯錯誤?

為什么在golang中打印出max int會導致編譯錯誤?

Go
SMILET 2021-12-27 17:44:05
這是去游樂場的鏈接package mainimport "fmt"import "math"func main() {    fmt.Println("Hello, playground")    fmt.Println(math.MaxUint32)}上面的代碼似乎導致constant 4294967295 overflows int是否會fmt.Println自動將每個數字轉換為 int?
查看完整描述

1 回答

?
慕桂英4014372

TA貢獻1871條經驗 獲得超13個贊

無類型常量具有默認類型,該類型是在需要類型值的上下文中將常量隱式轉換為的類型。無類型常量的默認類型分別是 bool、rune、int、float64、complex128 或 string,具體取決于它是 boolean、rune、integer、浮點、complex 或 string 常量。


func Println(a ...interface{}) (n int, err error)


fmt.Println(math.MaxUint32)

math.MaxUint32是int在此上下文中默認為類型的無類型整數常量,是類型interface{}參數的無類型整數常量參數。


int 是有符號的 32 位或 64 位整數,具體取決于實現。


const (

    MaxInt32  = 1<<31 - 1

    MaxUint32 = 1<<32 - 1

)

MaxUint32大于MaxInt32。


如果您運行,go env您應該看到您使用的是 32 位架構,例如,GOARCH="386".


不要接受默認的 32 位int類型。使用兼容的類型轉換。例如,寫


fmt.Println(uint32(math.MaxUint32))


查看完整回答
反對 回復 2021-12-27
  • 1 回答
  • 0 關注
  • 278 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號