Single UNIX或POSIX中int
的大小保证是什么?这肯定是常见问题,但我找不到答案......
答案 0 :(得分:4)
有了icecrime的回答,并且在我身边进一步搜索,我得到了一个完整的图片:
ANSI C和C99都要求INT_MAX至少为+32767(即2 ^ 15-1)。 POSIX并不是那样的。单Unix v1具有相同的保证,而单Unix v2表示最小可接受值为2 147 483 647(即2 ^ 31-1)。
答案 1 :(得分:3)
C99标准以下列方式指定标题<limits.h>
的内容:
它们的实现定义值的大小应相等或更大 (绝对值)显示的那些,具有相同的符号。
- int类型对象的最小值
INT_MIN -32767
// - (2 15 - 1)- int类型对象的最大值
INT_MAX +32767
// 2 15 - 1- unsigned int类型对象的最大值
UINT_MAX 65535
// 2 16 - 1
int
类型没有表达大小要求。
但是,<stdint.h>
标头提供了额外的精确宽度整数类型 int8_t
,int16_t
,int32_t
,int64_t
和他们的未签名对应方:
typedef名称
intN_t
指定a 有符号整数类型,宽度为N,no 填充位和二进制补码 表示。因此,int8_t
表示a 带有宽度为的有符号整数类型 正好是8位。
答案 2 :(得分:-1)
POSIX不承认这一点。 ISO C标准保证类型能够处理至少一定范围的值,但不能保证它们具有特定的大小。
C99引入的<stdint.h>
标题可让您访问类似int16_t
的类型。