例如,以下类型之间的区别是什么/何时/何时使用它们?
int64_t
int_least64_t
int_fast64_t
答案 0 :(得分:5)
int64_t
是一种完全 64位宽度,二进制补码表示,没有填充位。这是有用的,例如用于二进制接口;它的存在是可选,仅在具有整数类型的架构上定义。
int_least64_t
是至少 64位宽度的最小可能类型,具有实现定义的表示和填充。如果64位宽度不可用,则可能更宽,例如,在算法中工作,你需要一个特定的最小值范围。
int_fast64_t
是一种至少64位宽度的类型。如果CPU可以更有效地处理更宽泛的类型,那么可能会更宽,从而为内存占用空间提供速度。
第一个非常具体。如果底层硬件很棘手,另外两个给编译器一些摆动空间,即你告诉编译器在哪种条件下你会接受比请求更广泛的类型。
答案 1 :(得分:1)
它们是用于保存它们所说的位的类型,但针对CPU架构进行了优化。
这意味着在64位机器上,fast16_t的大小可能是64位;它不应该依赖于真实的类型大小,例如如果你写一个结构到磁盘。使用“普通”类型。