在GNU/Linux中表示64位整数

smi*_*dha 12 c c++ 64-bit long-integer

我正在使用Ubuntu 10.10(64位),gcc我想在我的C++程序中使用64位整数.

在我的系统的输出sizeof(long), sizeof(long long int)并且sizeof(int64_t)是所有8个字节(64位).

您推荐使用64位整数的限定符(long,long longint64_t)?

Ant*_*ake 25

int64_t - 这是因为它是最便携的表示.其他两个可以在其他机器上表示不同.


Lal*_*and 8

的int64_t.如果需要64位,请明确声明.长长的长度因机器而异.


Kei*_*son 8

您需要64位还是至少64位?

使用哪种的int64_t,int_least64_tint_fast64_t最清楚地表达你的意图.(这三种方法几乎肯定是当前系统上的相同类型,但记录您的意图很有价值.)

所有实现必须提供int_least64_tint_fast64_t.至少在理论上int64_t可能不存在(例如,如果编译器具有128位类型但没有64位类型,或者如果有符号整数不使用2的补码表示).

(但在我见过的每个C99-ish实现中,long long都是64位,并且int64_t存在.)