去班次太大了

时间:2017-12-18 01:07:37

标签: go

在Go的constant specification中,提到:

  

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

所以我试过

const VeryVeryBigNumber = 1 << 200

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

shift count too large: 512

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

由于

1 个答案:

答案 0 :(得分:3)

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

  

实施限制:虽然数字常量具有任意性   语言中的精度,编译器可以使用一个来实现它们   内部表示精度有限。说,每一个   实施必须:

     

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

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

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