代码之家  ›  专栏  ›  技术社区  ›  Gordon Wrigley

你什么时候用uint?至少16?

c
  •  5
  • Gordon Wrigley  · 技术社区  · 16 年前

    我在看stdint.h,考虑到它有uint16和uint fast16,uint least16的用途是什么?你想要的是,其他两个中的一个做得不一样好吗?

    3 回复  |  直到 16 年前
        1
  •  10
  •   Michael Burr    16 年前

    假设您正在使用以下编译器:

    • unsigned char 是8位
    • unsigned short 是32位
    • unsigned int 是64位

    无符号int是最快的。在那个平台上:

    • uint16_t 可用
    • uint_least16_t 将是32位值
    • uint_fast16_t 将是64位值

    有点神秘,但这就是它的目的。

    它们有多有用是另一回事——我一直都能看到确切的尺寸变化。这就是人们想要的。我见过的“最少”和“最快”版本几乎从未使用过(可能只是在示例代码中——我真的不确定)。

        2
  •  2
  •   Gordon Wrigley    16 年前

    啊,patrick发布的链接中包含了“typedef name uint least n”这个词,它指定了一个宽度至少为n的无符号整数类型,这样,较小的无符号整数类型就不会至少具有指定的宽度。”

    所以我现在的理解是:

    uint至少16是能够容纳uint16的最小物体

    uint fast16是能够容纳uint16的最快的东西

    不幸的是,在所有平台上都可能没有uint16,在任何可用的平台上,uint16都会引用它。因此,如果保证它存在于所有平台上,我们就根本不需要uint-least16。

        3
  •  0
  •   Patrick    16 年前

    这是C标准的一部分。它不需要一个好的用例。P

    this 翻页并查找标题为“最小宽度整数类型”的部分。