在 Go 编程领域,出现一个常见问题:“为什么当 userid := 12345 时我的常量会溢出并且做了 := (userid &^(0xFFFF
编译此类代码时,出现了可怕的错误:“constant -18446462598732840961 溢出 int。”但是这个误导性信息的背后隐藏着什么呢?
这个灾难背后的罪魁祸首是常量 ^(0xFFFF
0xffff
现在,使用值 12345 初始化的变量 userid 继承了 int 类型。当执行按位与运算 (&) 时,编译器假定无类型常量应降级为 int 类型。这种假设会导致冲突,因为常量的大小超过了 int 允许的最大值。
要解决此问题,请拥抱类型转换的力量。如果您打算分配常量 0x0000ffffffffffff,请考虑使用 1
为了真正的可移植性,请避免使用 int int64,扩大代码范围以适应 32 位和 64 位架构。
以上是为什么我的Go在使用按位运算时会不断溢出?的详细内容。更多信息请关注PHP中文网其他相关文章!