在 GNU/Linux 中表示 64 位整数
我正在使用带有 gcc
的 Ubuntu 10.10(64 位),并且我想在我的 C++ 程序中使用 64 位整数。
在我的系统上,sizeof(long)
、sizeof(long long int)
和 sizeof(int64_t)
的输出都是 8 个字节(64 位) )。
对于使用 64 位整数,您建议使用哪种限定符(long
、long long
或 int64_t
)?
I am using Ubuntu 10.10 (64 bit) with gcc
and I wanted to use a 64 bit integer in my C++ program.
On my system the outputs of sizeof(long)
, sizeof(long long int)
and sizeof(int64_t)
are all 8 bytes (64 bits).
Which qualifier (long
, long long
, or int64_t
) would you recommend for using 64 bit integers?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
int64_t
——这是因为它是最可移植的表示形式。另外两个可以在其他机器上以不同的方式表示。int64_t
-- This is because it is the most portable representation. The other two could be represented differently on other machines.int64_t。如果您需要 64 位,请明确声明。长和长的尺寸因机器而异。
int64_t. If you need 64 bits, declare it explicitly. The size of long and long long varies by machine.
您需要正好 64 位还是至少 64 位?
使用
int64_t
、int_least64_t
或int_fast64_t
中最能清楚表达您意图的一个。 (几乎可以肯定,在当前系统上,这三种类型都是相同的类型,但记录您的意图很有价值。)所有实现都必须提供
int_least64_t
和int_fast64_t
。至少在理论上,int64_t
可能不存在(例如,如果编译器有 128 位类型但没有 64 位类型,或者有符号整数不使用 2 的补码表示)。(但在我见过的每个 C99 风格的实现中,
long long
恰好是 64 位,并且int64_t
存在。)Do you need exactly 64 bits or at least 64 bits?
Use whichever of
int64_t
,int_least64_t
, orint_fast64_t
most clearly expresses your intent. (All three are almost certain to be the same type on current systems, but documenting your intent is valuable.)All implementations must provide
int_least64_t
andint_fast64_t
. It's at least theoretically possible thatint64_t
might not exist (say, if the compiler has a 128-bit type but no 64-bit type, or if signed integers aren't represented using 2's-complement).(But in every C99-ish implementation I've ever seen,
long long
is exactly 64 bits, andint64_t
exists.)为 64 位整数定义自定义类型并在代码中使用它。使用#ifdef指令让编译器可以选择正确的一个。统一一些整数的例子:
Define custom type for 64-bit integer and use it in your code. Use the directive #ifdef to the compiler can choose the right one. The example for unification some integers: