在单个UNIX或POSIX中保证sizeof(int)

时间:2010-12-26 12:02:41

标签: unix posix sizeof

Single UNIX或POSIX中int的大小保证是什么?这肯定是常见问题,但我找不到答案......

3 个答案:

答案 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_tint16_tint32_tint64_t和他们的未签名对应方:

  

typedef名称intN_t指定a   有符号整数类型,宽度为N,no   填充位和二进制补码   表示。因此,int8_t表示a   带有宽度为的有符号整数类型   正好是8位

答案 2 :(得分:-1)

POSIX不承认这一点。 ISO C标准保证类型能够处理至少一定范围的值,但不能保证它们具有特定的大小。

C99引入的<stdint.h>标题可让您访问类似int16_t的类型。