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

Des*_*ica 0 c

可能重复:
int_least64_t vs int_fast64_t vs int64_t

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

  • int64_t
  • int_least64_t
  • int_fast64_t

Dev*_*lar 5

int64_t是一种精确的 64位宽度,二进制补码表示,没有填充位.这对于例如二进制接口中的工作是有用的; 它的存在是可选的,仅在具有完全宽度的整数类型的体系结构上定义.

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

int_fast64_t是一种至少64位宽度的类型.如果可以通过CPU更有效地处理更宽的类型,交换内存占用以提高速度,则可能会更宽.

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