你什么时候使用uint_least16_t

时间:2008-10-30 07:12:57

标签: c

我正在看stdint.h,并且假设它有uint16_t和uint_fast16_t,uint_least16_t的用途是什么,你可能想要用其他两个中的哪一个做得不好?

3 个答案:

答案 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页面并查找标题为“最小宽度整数类型”的部分。