2

我必须使用可能超过 4 个字节的无符号整数,我应该使用什么类型?

PS对不起“noobism”,但就是这样:D

注意:我需要整数,因为我必须进行除法并且只关心整数部分,这样 int 很有用

4

5 回答 5

11

只需包含 <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>,因为在这种情况下它应该简单地转发到编译器的头文件)。

于 2008-10-18T19:10:40.760 回答
6

long long , 64 位整数...在这里您可以找到有关数据类型和范围的一些参考...

于 2008-10-18T19:00:30.640 回答
4

任君挑选:

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)

于 2008-10-18T19:16:15.677 回答
2

如果您需要非常长的整数(任意精度),您还可以尝试gmp库,它还提供了基于 C++ 类的接口。

于 2008-10-18T20:42:23.133 回答
1

unsigned long long - 至少 64 位长

于 2008-10-18T19:02:47.950 回答