64位处理器的uint16_t和unsigned short int incase有什么区别?

我来到使用typesuint16_t的variables,但由于我的项目限制,我无法使用该数据types。 是否有可能unsigned short int而不是uint16_t ? 我不知道他们之间的区别。 请问有人可以澄清吗?

uint16_t是无符号的16位整数。

unsigned short int是无符号短整型,但大小取决于实现。 标准只是说它至少是16位(即UINT_MAX最小值是65535 )。 在实践中,它通常是16位,但你不能保证。

注意:

  1. 如果你想要一个可移植的无符号的16位整数,使用uint16_t
  2. inttypes.hstdint.h都是在C99中引入的。 如果您使用C89,请定义您自己的类型。
  3. uint16_t在某些实现中可能不提供(请参阅下面的参考资料),但unsigned short int始终可用。

参考:C11(ISO / IEC 9899:201x)§7.20 整数类型

对于此处描述的实现提供的每种类型)应声明该typedef名称并定义相关的宏。 相反,对于这里描述的实现没有提供的每种类型,不应该声明该typedef名称,也不应该定义相关的宏。 一个实现应该提供被描述为“必需”的那些类型,但是不需要提供任何其他类型(被描述为“可选的”)。

uint16_t保证是一个16位大小的无符号整数

unsigned short int保证是一个无符号short integer ,其中short integer是由编译器(和潜在的编译器标志)定义的,你当前正在使用。 对于x86硬件的大多数编译器来说, short integer是16位。

还要注意,根据ANSI C标准,只定义了16位的最小尺寸,最大尺寸取决于编译器的开发人员

最小类型限制

符合标准的任何编译器也必须遵守任何特定类型可接受的值范围的以下限制。 请注意,这些是下限:一个实现可以自由地超过任何或所有这些。 还要注意,字符的最小范围取决于字符是否被认为是有符号的或无符号的。

输入最小范围

 signed char -127 to +127 unsigned char 0 to 255 short int -32767 to +32767 unsigned short int 0 to 65535