1

可能重复:
int_least64_t vs int_fast64_t vs int64_t

例如,以下类型之间有什么区别以及为什么/何时使用它们?

  • int64_t
  • int_least64_t
  • int_fast64_t
4

2 回答 2

8

int64_t是一种正好64 位宽度、二进制补码表示且没有填充位的类型。这对于例如二进制接口中的工作很有用;它的存在是可选的,仅在具有恰好具有该宽度的整数类型的体系结构上定义

int_least64_t至少64 位宽度的最小可能类型,具有实现定义的表示和填充。如果精确的 64 位宽度不可用,它可能会更宽,例如,对于需要特定最小值范围的算法工作。

int_fast64_t是一种至少 64 位宽的类型。如果 CPU 可以更有效地处理更宽的类型,它可能会更宽,以内存占用换取速度。

第一个非常具体,但可选。如果底层硬件很棘手,另外两个给编译器一些回旋余地,即你告诉编译器在什么条件下你会接受比请求更宽的类型。

于 2012-07-25T12:15:58.900 回答
1

它们是为保存他们所说的位而设计的类型,但针对 CPU 架构进行了优化。

这意味着在 64 位机器上,fast16_t 的大小可能是 64 位;它不应该依赖于实际类型大小,例如,如果您将结构写入磁盘。为此使用“正常”类型。

于 2012-07-25T12:15:09.960 回答