我需要知道运行我的代码的系统中本机 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);
如果您对特定平台的float
和double
限制感兴趣,请打开float.h
。
如果任何东西没有使用每个字符 8 位,我会非常惊讶。 你可以用更多的字符填充一个字符,然后它应该像0xFFFF一样保持,看看它的价值是什么。