去班次太大了

问题描述 投票:2回答:1

在Go的constant specification中,提到:

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

所以我试过了

const VeryVeryBigNumber = 1 << 200

它的工作原理。但是,我可以尝试的最大移位数是511,使用512会抛出:

shift count too large: 512

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

谢谢

go
1个回答
3
投票

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

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

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

不幸的是,comments around the limits没有给出理由。

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

© www.soinside.com 2019 - 2024. All rights reserved.