【问题标题】:Is it possible for int_least16_t to be an alias for int rather than short?int_least16_t 是否有可能成为 int 的别名而不是 short 的别名?
【发布时间】:2019-04-22 17:22:43
【问题描述】:

从 C99 标准中,我可以看到 int_least16_t 保证至少有 16 位的宽度。

7.18.1.2 最小宽度整数类型

...

typedef 名称 uint_leastN_t 指定了一个宽度至少为 N 的无符号整数类型,因此没有更小尺寸的无符号整数类型至少具有指定的宽度。因此,uint_least16_t 表示一个无符号整数类型,其宽度至少为 16 位。

...

据我所知,该标准仅对类型的最小宽度进行了限制,不一定对它们的等级进行了限制。因此,在 int 和 short 都具有 16 位宽度的架构上,尽管 short 的等级较低,但 int_least16_t 是否可能是 int 的别名?

【问题讨论】:

    标签: c types integer int stdint


    【解决方案1】:

    据我所知,该标准仅对 类型的最小宽度,不一定是它们的等级。所以在一个 int 和 short 都具有 16 位宽度的架构,是吗? int_least16_t 可能是 int 的别名,尽管 短期排名较低的事实?

    您已引用标准相关文本的全部内容。是的,如果shortint 大小相同,并且没有至少16 位的更窄整数类型,那么int_least16_t 可以是int

    确实,如果实现仅支持 64 位整数,那么 long long intlong intintshort int 都是 64 位,那么 int_least16_t 可能是 long long int。或者如果signed char 在那个或其他一些实现中是16 位宽,那么int_least16_t 可能是signed char。或者在某些情况下,它可能是扩展的有符号整数类型,而不是上述任何一种。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-15
      • 2011-08-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多