根据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的别名?
答案 0 :(得分:2)
据我所知,该标准仅对 类型的最小宽度,不一定是其等级。所以在 int和short都具有16位宽度的体系结构,是吗 尽管int_least16_t可能是int的别名, 矮个子排名更低的事实?
您已引用了该标准的所有相关文本。是的,如果short
与int
的大小相同,并且没有至少16位的较窄整数类型,则int_least16_t
可以为int
。
实际上,如果实现仅支持64位整数,那么long long int
,long int
,int
和short int
均为64位,则{{1 }}可以是int_least16_t
。或者,如果long long int
的宽度为16位,则signed char
可能为int_least16_t
。或者在某些情况下,它可以是扩展的带符号整数类型,而不是上述任何一种。