什么';golang恒定溢流uint64有什么问题 userid:=12345 did:=(用户ID&^(0xFFFF)

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

数值常量表示任意精度的值,而不是 溢出

常量可以是类型化的,也可以是非类型化的

常量可以通过常量声明或 转换,或在变量声明或 赋值或作为表达式中的操作数。如果 常量值不能表示为相应的 类型

非类型化常量具有默认类型,即 常量在类型化值为的上下文中进行隐式转换 例如,在短变量声明(如i:=0)中为必需 其中没有显式类型。未类型化的 常量是布尔、符文、整数、浮点64、复数128或字符串 分别取决于它是否为布尔、符文、整数, 浮点、复数或字符串常量

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