如何使vim处理64位整数?
在vim如何使vim处理64位整数?,vim,Vim,在vim中:h编号: 数字32或64位有符号数字 最大32/64位数字的值: 2^31=2147483648 2^63=9223372036854775808 现在,如果我在vim中调用str2nr(): :echo str2nr('2147483648') -> -2147483648 :echo str2nr('112147483648') -> 478333952 或直接求值表达式: echo 2147483648 + 7777 -> -2147482871 所
中:h编号
:
数字32或64位有符号数字
最大32/64位数字的值:
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
p.S.上述试验是在以下地点进行的:
Archlinux 64bit
Vim 7.4.135 (from Arch 64bit repo)
据此,。你不能
Bram说一个数字是一个int
,如果您的平台将int声明为64位,那么vim中将有一个64位int。但是int被选为32位(由编译器),所以一个数字只能得到32位
在:h限制
中,我发现以下内容
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位机器上打印(我怀疑你的机器也会这样做)
Linux LsyHP 3.13.6-1-ARCH#1 SMP PREEMPT Fri Mar 7 22:47:48 CET 2014 x86_64 GNU/Linux
这是uname-a
的输出,它是一个64位的框。我搜索了很多次,但没有找到你在答案中发布的线程。看来我们不能这样做,因为布拉姆已经证实了这一点。如果我使用插件,如果我更改代码并将vim的特定版本编译为test/dev env….@Kent作为一个64位系统并不保证您的编译器将使用64位作为int。我添加了一些代码,您可以使用这些代码在系统上进行编译,以查看编译器将使用多少位作为int。我相信arch使用的是gcc
gcc应该打印它使用了32位的整数。你是对的。我发表的评论是针对你答案的第一次修订。您提到64位系统可能有“更多”。在上一篇评论中,我解释了为什么我不会更改代码并编译自己的vim。但是你的链接非常有用,我想我应该接受这个答案。
sizeof int in bits 32