栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Golang常量到底出了什么问题uint64

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Golang常量到底出了什么问题uint64

^(0xFFFF << 48)
是一个无类型的常数,它是一个任意大的值。

0xffff << 48
0xffff000000000000
。取反时,得到
-0xffff000000000001
(由于补码为-x = ^ x
+ 1或^ x =-(x + 1))。

当您编写时

userid :=12345
userid
获取类型
int
。然后,当您尝试将
&
其与未类型化的常量
-0xffff000000000001
进行()编译时,编译器会认为此常量必须为
int
。在这一点上,编译器会抱怨,因为该值的大小太大而不能成为
int

如果您尝试获取常量

0x0000ffffffffffff
,则可以使用
1<<48 -1
,它将适合您(如果您具有64位整数)。由于如果您的代码
int
是32位,将永远无法工作,因此您应该
int64
在代码中使用而不是
int
使其可移植。

博客文章https://blog.golang.org/constants解释了常量的工作原理,以及为什么它们是常量的背景。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/468985.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号