14

我想使用一个u_int64_t变量作为搜索键,

u_int64_t在 32 位机器上可用吗?

如果没有,我必须将此变量分成两个变量吗?那么作为搜索键,就麻烦一些了

有什么解决方法吗?

4

3 回答 3

12

C 标准不保证无符号的 64 位整数类型,但通常在 32 位机器上以及几乎所有运行 Linux 的机器上都可用。当存在时,类型将被命名uint64_t(注意少一个下划线)并在<stdint.h>头文件中声明。

于 2013-05-13T11:39:01.483 回答
5

是的 32 位机器支持 64 位整数数据类型。

在 C89 标准中,支持 long long (≥ 64, ≥ size of long) 类型作为GNU 扩展。在 C99 标准中,原生支持long long(≥ 64, ≥ size of long) 整数。

于 2013-05-13T11:41:48.553 回答
0

根据一些文档或阅读它不太清楚 __GLIBC_HAVE_LONG_LONG 是定义其在 32 位架构中的存在

可能的使用解决方案可能类似于以下内容

#include <sys/types.h>

#ifdef __GLIBC_HAVE_LONG_LONG

    u_int64_t i;

#endif

哦,顺便说一句,这是在 linux 中

于 2013-05-13T12:19:00.087 回答