【发布时间】:2010-09-19 22:51:35
【问题描述】:
我正在查看 stdint.h 并且鉴于它具有 uint16_t 和 uint_fast16_t,那么 uint_least16_t 有什么用处?您可能希望其他两个中的一个无法做到这一点?
【问题讨论】:
标签: c
我正在查看 stdint.h 并且鉴于它具有 uint16_t 和 uint_fast16_t,那么 uint_least16_t 有什么用处?您可能希望其他两个中的一个无法做到这一点?
【问题讨论】:
标签: c
假设你正在使用以下编译器:
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
查看this 页面并查找标题为“最小宽度整数类型”的部分。
【讨论】: