我必须使用可以跨越4个字节以上的无符号整数,我应该使用哪种类型?

PS抱歉<!>“noobism <!>”;但就是这样:D

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

有帮助吗?

解决方案

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

其他提示

只需包含<!> lt; stdint.h <!> gt;并使用int64_t和uint64_t(因为你想要无符号,你想要uint64_t)。

该标头上还有其他几个有用的变体,例如最少的变体(uint_least64_t是至少64位的类型)和快速变体(uint_fast64_t是最快的整数类型,至少64位)。同样非常有用的是intptr_t / uintptr_t(对于void *指针足够大)和intmax_t / uintmax_t(最大类型)。

如果由于某种原因你的编译器没有<!> lt; stdint.h <!> gt; (因为IIRC它是C标准,而不是C ++标准),你可以使用Boost的 boost / cstdint.hpp (你可以使用它,即使你有一个<!> lt; stdint.h <!> gt;,因为在这种情况下它应该简单地转发到编译器的头部)

选择:

long long(<!>#8211; 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位长

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top