题
我必须使用可以跨越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位长