我正在阅读《Lua 编程,第四版》,我被困在练习 13.1 上,因为 Lua 的行为似乎与书中不同。第 13.2 节关于无符号整数,指出:
> x = 13835058055282163712 -- 3ul << 62ul
> x --> -4611686018427387904
但是如果我在 Lua 5.4、Windows x64 或 Lua 5.3、WSL x64 中执行此操作,它们的行为都是这样的:
> x = 13835058055282163712
> x
1.3835058055282e+19
> math.type(x)
float
所以,我有两个问题:
在本书撰写时(对应 Lua 版本 5.3.0),Lua 在读取长整数文字时有错误的行为:它环绕它们。
后来,在 Lua 5.3.x 中,此行为已得到纠正,变得更加用户友好。
就目前而言,当整数文字超出 int64 范围时,Lua 将其读取为浮点数以保留其数值。