【发布时间】:2012-05-24 18:52:48
【问题描述】:
我希望能够在我的项目中使用大的正整数(8 字节),即使 sizeof(unsigned long) 在我的系统中产生 8,我读到在大多数系统中 unsigned long 只有 4 字节,我决定试试 unsigned long long,因为它保证至少有 8 个字节。
虽然我使用它的次数越多,我发现它也不是超级便携,例如在某些系统中(取决于编译器)printf 使用 %llu 格式化它,在某些系统中它使用 %lld 格式化它。
我的代码只能在 64 位 debian 机器上运行,其中 unsigned long 将是 8 个字节。便携性不是一个大问题。在这种情况下使用 unsigned long long 而不是 unsigned long 是不是有点过头了,使用 unsigned long long 而不是 unsigned long 还有其他好处吗?
【问题讨论】:
-
你试过
uint64_t吗?它在<stdint.h>. -
使用它比 unsigned long long 有什么优势?
-
如果你没有任何类型正好是 64 位,而 long long 沿着更长的类型,它会停止编译。两者都存在于 C++11 中,两者都经常作为扩展存在,但如果有时存在一个而不存在另一个,我不会感到惊讶。如果你没有它,stdint.h 比 long long 更容易模拟(假设类型存在)。
-
谢谢,我会考虑使用的。
-
一个相关问题here.
标签: c++ unsigned-long-long-int