我必须使用可能超过 4 个字节的无符号整数,我应该使用什么类型?
PS对不起“noobism”,但就是这样:D
注意:我需要整数,因为我必须进行除法并且只关心整数部分,这样 int 很有用
只需包含 <stdint.h> 并使用 int64_t 和 uint64_t(因为您想要无符号,所以您想要 uint64_t)。
该标头还有其他几个有用的变体,例如最小变体(uint_least64_t 是一种至少 64 位的类型)和快速变体(uint_fast64_t 是最快的整数类型,至少有 64 位)。intptr_t/uintptr_t(对于 void * 指针来说足够大)和 intmax_t/uintmax_t(最大类型)也非常有用。
如果由于某种原因您的编译器没有 <stdint.h> (因为 IIRC 它是 C 标准,而不是 C++ 标准),您可以使用 Boost 的boost/cstdint.hpp(即使您有也可以使用<stdint.h>,因为在这种情况下它应该简单地转发到编译器的头文件)。
long long , 64 位整数...在这里您可以找到有关数据类型和范围的一些参考...
任君挑选:
long long
(–9,223,372,036,854,775,808 至 9,223,372,036,854,775,807)
unsigned long long
: (0 到 18,446,744,073,709,551,615)
如果您需要非常长的整数(任意精度),您还可以尝试gmp库,它还提供了基于 C++ 类的接口。
unsigned long long - 至少 64 位长