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