int_least16_t是否可以作为int的别名而不是short?

时间:2019-04-22 17:22:43

标签: c types integer int stdint

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

1 个答案:

答案 0 :(得分:2)

  

据我所知,该标准仅对   类型的最小宽度,不一定是其等级。所以在   int和short都具有16位宽度的体系结构,是吗   尽管int_least16_t可能是int的别名,   矮个子排名更低的事实?

您已引用了该标准的所有相关文本。是的,如果shortint的大小相同,并且没有至少16位的较窄整数类型,则int_least16_t可以为int

实际上,如果实现仅支持64位整数,那么long long intlong intintshort int均为64位,则{{1 }}可以是int_least16_t。或者,如果long long int的宽度为16位,则signed char可能为int_least16_t。或者在某些情况下,它可以是扩展的带符号整数类型,而不是上述任何一种。