int_least16_t 是否有可能是 int 而不是 short 的别名?

瑞安·阿维拉

从 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 intlong intint,和short int都是64位的,则int_least16_t可能是long long int或者,如果signed char是16个位宽,在或和其它一些实现int_least16_t可能signed char或者在某些情况下,它可以是扩展的有符号整数类型而不是上述任何类型。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

C++ 没有已知的从 'int*' 到 'uint16_t* {a ka short unsigned int*}' 的转换

是什么导致使用三进制而不是short将此有符号int转换为无符号int的转换?

为什么Java API使用int而不是short或byte?

使用unsigned int而不是unsigned short更改行为

如果byte + byte = int为什么int + int不是short / long?在C#中

c中的“ short int”和“ short”有什么区别?

从int到short可能的有损转换

将int加到short

从int到short的缩小

unsigned short int和unsigned int或unsigned short之间有什么区别?

是否可以查找给定类型的所有名称别名(例如,“ int”与“ Int32”)?

为什么golang中的符文是int32而不是uint32的别名?

通过指向int的指针别名char数组是否合法?

在C ++中饱和short(int16)

为什么编译器将“ char”与“ int”而不是“ short”匹配?

为什么open(linux)的返回值必须是int而不是short?

为什么在使用CHAR类型的参数调用时构造函数选择INT类型而不是SHORT?

为什么InputStream read()返回一个int而不是short?

内存浪费?如果main()应该只返回0或1,为什么main是用int而不是short int甚至char声明的?

是将要存储在int中的左移short是否未定义?

Java 检查数值是否为 short、long 或 int

用short和int重载

C中的short int变量

C(++)短减去short = int?

Short | quick int值比较

short-> int-> long type提升:有开销吗?

从'int'类型转换为'short unsigned int'可能会改变其值[-Wconversion]

当int不是int(intX_t)时

C将Short Int转换为Unsigned Short