I'm using an unsigned long long int to store number of characters in a file. And I'm scared that its range will be bypassed soon. Is therr another datatype which can hold values more than unsigned long long int?
I also need 2 unsigned long long int arrays to store the pointers to certain positions in the file. However the maximum number of elements that I can have in an array is 10000. Is there a way to have a lot more?
答案 0 :(得分:5)
只需担心文件中的字符数,就不必担心 https://www.google.co.uk/search?q=2%5E64+bytes+in+exabytes
这将提供18艾字节文件的存储空间。
直接回答问题。您应该查看一个需要大于64位数字的库
GMP是我使用过很多次的 https://gmplib.org
作为笔记 1 EB = 1,000,000 TB
答案 1 :(得分:2)
该标准指定的最大标准整数类型为long long int
。
6.8个128位整数
作为扩展,整数标量类型
__int128
支持具有整数的目标 模式宽度足以容纳128位。只需将__int128
写入带符号的128位整数,或者unsigned __int128
表示无符号的128位整数。海湾合作委员会不支持表达 类型为__int128
的整数常量,用于具有long long
整数且小于[ sic ]的目标 128位宽度。
__int128
是此类类型之一,它在x86-64
上可用,并且受所有主要编译器的支持。如您所料,它的宽度为128位。
答案 2 :(得分:1)
我使用的是无符号long long int格式,用于在文件中存储字符数。
当今大多数文件系统还使用64位存储文件大小(例如,使用ext2,它是i_size
+ i_dir_acl
,两个32位整数)。
具有64位,最大文件大小为18艾字节,这非常大。