0

从 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 的别名?

4

1 回答 1

2

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

你引用了标准的全部相关文本。是的,如果short与 大小相同int,并且没有至少 16 位的更窄整数类型,则int_least16_t可以是int

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

于 2019-04-22T18:01:24.290 回答