在vim :h Number
中:
A号32或64位有符号数。
max 32 / 64bit number的值:
2^31=2147483648
2^63=9223372036854775808
现在,如果我在vim中调用str2nr()
:
:echo str2nr('2147483648')
-> -2147483648
:echo str2nr('112147483648')
-> 478333952
或直接评估表达式:
echo 2147483648 + 7777
-> -2147482871
所以问题是,vim doc告诉number
是32或64位数。如何使vim处理64位数?比如2147483648 + 7777 =2147491425
上述测试是在以下情况下完成的:
Archlinux 64bit
Vim 7.4.135 (from Arch 64bit repo)
答案 0 :(得分:3)
根据这个https://groups.google.com/forum/#!topic/vim_dev/2pXdRG7yW0Y。你不能。
Bram说数字是int
,如果你的平台将int声明为64位,你将在vim中使用64位int。但是int被选择为32位(由编译器),所以你只得到一个数字的32位。
在:h limits
我找到以下内容。
Range of a Number variable: -2147483648 to 2147483647 (might be more on 64
bit systems)
可能更多可能会告诉您这些限制在64位平台上可能仍然相同。这完全取决于编译器。
我认为唯一可以改变这种情况的方法是,如果您要查看所有源代码并更改内部表示数字的方式,或者找到代表int
为64位的编译器。 (我不知道有哪一个)
如果要查找编译器将代表int
的位数,可以运行以下代码。
#include "limits.h"
#include "stdio.h"
int main() {
printf("sizeof int in bits %lu\n", sizeof(int) * CHAR_BIT);
}
在我的64位机器上打印(我怀疑你的机器也会这样做)
sizeof int in bits 32