什么是stdint.h中描述的“快速类型”?

时间:2012-07-25 12:11:41

标签: c

  

可能重复:
  int_least64_t vs int_fast64_t vs int64_t

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

  • int64_t
  • int_least64_t
  • int_fast64_t

2 个答案:

答案 0 :(得分:5)

int64_t是一种完全 64位宽度,二进制补码表示,没有填充位。这是有用的,例如用于二进制接口;它的存在是可选,仅在具有整数类型的架构上定义。

int_least64_t至少 64位宽度的最小可能类型,具有实现定义的表示和填充。如果64位宽度不可用,则可能更宽,例如,在算法中工作,你需要一个特定的最小值范围。

int_fast64_t是一种至少64位宽度的类型。如果CPU可以更有效地处理更宽泛的类型,那么可能会更宽,从而为内存占用空间提供速度。

第一个非常具体。如果底层硬件很棘手,另外两个给编译器一些摆动空间,即你告诉编译器在哪种条件下你会接受比请求更广泛的类型。

答案 1 :(得分:1)

它们是用于保存它们所说的位的类型,但针对CPU架构进行了优化。

这意味着在64位机器上,fast16_t的大小可能是64位;它不应该依赖于真实的类型大小,例如如果你写一个结构到磁盘。使用“普通”类型。

相关问题