班次计数太大

kas*_*uqi 4 go

在Go的常量规范中,提到:

数字常量表示任意精度的精确值并且不会溢出。

所以我尝试了

const VeryVeryBigNumber = 1 << 200

它有效。然而,我可以尝试的最大班次计数是 511,使用 512 会抛出:

shift count too large: 512

512代表什么?我无意使用它,我只是想知道为什么它在我的机器中限制为511(我使用的是ubuntu 64位和go 1.9.2)?

谢谢

Mar*_*arc 5

512 是一种任意限制。规范中唯一说的是:

实现限制:尽管数字常量在语言中具有任意精度,但编译器可以使用精度有限的内部表示来实现它们。也就是说,每个实施都必须:

表示至少 256 位的整数常量。

不幸的是,有关限制的评论没有给出理由。

在某些时候,必须使用限制。我建议坚持使用所需的 256。