在 C 中查找 int 的位宽;最佳跨平台方法



我需要知道运行我的代码的系统中本机 int 的宽度(大小),以位为单位。

我可以使用"sizeof"获取字符中的宽度,但是,我的理解是,在 C 规范中,字符中没有任何地方分配了特定数量的位。

那么查找 int 位宽的最佳跨平台方法是什么?

CHAR_BIT(从<limits.h>开始)是一个char中的位数,所以

sizeof(int) * CHAR_BIT

是你正在寻找的。

CHAR_BIT在"5.2.4.2.1 整数类型的大小"中指定的 C99 标准。

补充:开放组规范可能很有趣

  • http://pubs.opengroup.org/onlinepubs/7999959899/basedefs/limits.h.html

国家:

限制 {CHAR_BIT}、{SCHAR_MAX} 和 {UCHAR_MAX} 的值为 现在要求分别为 8、+127 和 255。

打开limits.h,您应该会看到有关特定平台整数限制大小的所有信息。

这是您确定int中有多少位的方法:

#include <limits.h>
printf("Number of bits in an int: %zun", sizeof(int) * CHAR_BIT);

如果您对特定平台的floatdouble限制感兴趣,请打开float.h

如果任何东西没有使用每个字符 8 位,我会非常惊讶。 你可以用更多的字符填充一个字符,然后它应该像0xFFFF一样保持,看看它的价值是什么。

最新更新