Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使vim处理64位整数?_Vim - Fatal编程技术网

如何使vim处理64位整数?

如何使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 所

在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
所以问题是,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