为了账号安全,请及时绑定邮箱和手机立即绑定

为什么在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 关注
  • 286 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号