可能重复:
int_least64_t vs int_fast64_t vs int64_t什么是stdint.h中描述的“快速类型”?
例如,什么是以下类型的,为什么/何时使用它们之间的区别?
int64_t
int_least64_t
int_fast64_t
可能重复:
int_least64_t vs int_fast64_t vs int64_t什么是stdint.h中描述的“快速类型”?
例如,什么是以下类型的,为什么/何时使用它们之间的区别?
int64_t
int_least64_t
int_fast64_t
int64_t
是的一种类型 64位宽度,二进制补码表示,并且没有填充位。这是有用的,例如在二进制界面中工作;它的存在是可选,仅在具有具有的整数类型的架构上定义。
int_least64_t
是最小可能的类型至少 64位宽度,带有实现定义的表示形式和填充。如果64位宽度不可用,则可能更宽。适用于需要特定最小值范围的算法。
int_fast64_t
是一种至少为64位宽度的类型。如果CPU能够更高效地处理更宽泛的类型,那么它可能更宽一些,交换内存占用空间以提高速度。
第一个是非常具体的。如果底层硬件很棘手,另外两个给编译器一些摆动空间,即告诉编译器在什么情况下你会接受比请求更宽的类型。
也许值得注意的是'intN_t'必须是二进制补码,并且没有填充位。 – 2012-07-25 12:35:15
@DanielFischer:...并且是可选的,是的。具有这种类型的平台应该定义这些类型,但是平台可能没有这些类型,不定义这些类型,并且仍然完全符合。 (也就是说,一个使用例如补码的平台,它的short,int,long等可能没有定义任何intN_t类型,但仍然完全符合。) – DevSolar 2012-07-25 12:45:28
好点,可选性,特别是因为最小和快速是必需的标准宽度8/16/32/64。 – 2012-07-25 12:48:08
他们是类型设计为容纳他们说的位,但对于CPU架构进行了优化。
这意味着在64位机器上,fast16_t可能是64位大小;它不应该依赖于实际的字体大小,例如如果你写一个结构到磁盘。为此使用“正常”类型。
您是否尝试过Google搜索?你发现了什么? – YePhIcK 2012-07-25 12:13:47
@YePhIcK:是的我使用谷歌搜索,但最后我更喜欢这里给出的回复 – Destroyica 2012-07-25 12:19:43
@Destroyica:YePhIcK给出的链接*回答你的问题,而不需要再次输入。 (幸运的是,如果我知道答案,我先输入,然后再搜索。对于你这样做的问题,应该是相反的。) – DevSolar 2012-07-25 12:30:13