如果您使用的是符合C99或C11标准的编译器,请使用int_least64_t以获得最大兼容性.或者,如果你想要一个无符号类型,uint_least64_t.这些都在中定义<stdint.h>
<stdint.h>通常也定义int64_t,但由于标准不要求,因此可能无法在每个实现中定义.然而:
int_least64_t - 至少64位,和int_fast64_t - 此实现中最快的大小至少为64位C99和C11都要求它们存在(参见C99标准中的第7.18.1.2-3节和C11标准中的第7.20.1.2-3节).
虽然C99指定long long是在特定机器上至少64位(第5.2.4.2.1),在类型<stdint.h>被设计成显式便携.
你可以阅读更多有关在不同平台上的整数大小这里.请注意,整数类型的大小是long数据类型的问题- 在64位Windows上,它当前是32位,而在64位linux上它是64位.出于这个原因,我相信你最安全的使用类型<stdint.h>
值得注意的是,有些人觉得long long更具可读性.就个人而言,我更喜欢这些类型<stdint.h>,因为它们允许你在使用它们时说出你的意思 - 我发现它更具可读性.当然,可读性通常是一种品味问题 - 如果你正在使用现有的代码库,我只会遵循它们所做的一切:)
如果你的编译器只支持C89,那么R ..的解决方案将允许你最多53位的整数精度.
| 归档时间: |
|
| 查看次数: |
2477 次 |
| 最近记录: |