从 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 的别名?
据我所知,该标准只对类型的最小宽度进行了限制,而不一定是对它们的等级进行限制。因此,在 int 和 short 都具有 16 位宽度的体系结构上,尽管 short 的等级较低,但 int_least16_t 是否可能是 int 的别名?
您引用了标准的全部相关文本。是的,如果short
与 的大小相同int
,并且没有至少 16 位的更窄整数类型,则int_least16_t
可以是int
。
事实上,如果实现仅支持64位整数,所以long long int
,long int
,int
,和short int
都是64位的,则int_least16_t
可能是long long int
。或者,如果signed char
是16个位宽,在或和其它一些实现int_least16_t
可能signed char
。或者在某些情况下,它可以是扩展的有符号整数类型而不是上述任何类型。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句