什么';golang恒定溢流uint64有什么问题 userid:=12345 did:=(用户ID&^(0xFFFF)
数值常量表示任意精度的值,而不是 溢出 常量可以是类型化的,也可以是非类型化的 常量可以通过常量声明或 转换,或在变量声明或 赋值或作为表达式中的操作数。如果 常量值不能表示为相应的 类型 非类型化常量具有默认类型,即 常量在类型化值为的上下文中进行隐式转换 例如,在短变量声明(如i:=0)中为必需 其中没有显式类型。未类型化的 常量是布尔、符文、整数、浮点64、复数128或字符串 分别取决于它是否为布尔、符文、整数, 浮点、复数或字符串常量什么';golang恒定溢流uint64有什么问题 userid:=12345 did:=(用户ID&^(0xFFFF),go,integer-overflow,Go,Integer Overflow,数值常量表示任意精度的值,而不是 溢出 常量可以是类型化的,也可以是非类型化的 常量可以通过常量声明或 转换,或在变量声明或 赋值或作为表达式中的操作数。如果 常量值不能表示为相应的 类型 非类型化常量具有默认类型,即 常量在类型化值为的上下文中进行隐式转换 例如,在短变量声明(如i:=0)中为必需 其中没有显式类型。未类型化的 常量是布尔、符文、整数、浮点64、复数128或字符串 分别取决于它是否为布尔、符文、整数, 浮点、复数或字符串常量 int是特定于实现的大小,32位或64位 user
int
是特定于实现的大小,32位或64位
userid
的类型为int
userid := 12345
did := (userid & ^(0xFFFF << 48))
^(0xFFFF
package main
import "fmt"
func main() {
userid := 12345
did := uint64(userid) & ^uint64(0xFFFF<<48)
fmt.Println(userid, did)
}
12345 12345