你什么时候使用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

请参阅此页面并查找标题为“最小宽度整数类型”的部分。