我正在看stdint.h,并且假设它有uint16_t和uint_fast16_t,uint_least16_t的用途是什么,你可能想要用其他两个中的哪一个做得不好?
答案 0 :(得分:10)
假设您正在使用以下编译器进行编译:
unsigned char
是8位unsigned short
是32位unsigned int
是64位unsigned int是'最快的'。在那个平台上:
uint16_t
不可用uint_least16_t
将是32位值uint_fast16_t
将是64位值有点神秘,但这就是它的用途。
它们的用处是另一个故事 - 我一直看到确切的尺寸变体。这就是人们想要的。我见过的“最少”和“快速”版本使用得非常接近(它可能只是在示例代码中 - 我真的不确定)。
答案 1 :(得分:2)
啊,Patrick发布的链接包括这个“typedef名称uint_leastN_t指定一个宽度至少为N的无符号整数类型,这样没有大小较小的无符号整数类型至少具有指定的宽度。”
所以我目前的理解是:
uint_least16_t能够持有uint16的最小的东西
uint_fast16_t能够持有uint16的最快的东西
uint16_t正好是一个uint16,遗憾的是可能并非在所有平台上都可用,在任何可用的平台上uint_least16_t都会引用它。因此,如果保证在所有平台上都存在,我们根本不需要uint_least16_t。
答案 2 :(得分:0)
这是c标准的一部分。它不需要一个好的用例。 :P
请参阅this页面并查找标题为“最小宽度整数类型”的部分。