stdint的int8_t可以存在于没有8位字节的架构上吗?

时间:2013-03-11 10:22:01

标签: c architecture types

Apparently there are architectures that don't have 8-bit bytes.

似乎这样的体系结构会排除存在int8_t(在stdint.h中定义)类型,因为根据我的理解,C不能创建小于CHAR_BIT的数据类型。 / p>

也就是说,IEEE stdint.h def似乎要求存在这样的类型(以及其他类型),只允许64位不存在于不支持它的架构上。

我错过了什么吗?

2 个答案:

答案 0 :(得分:3)

编辑:正如@JasonD在下面的评论中指出的那样,链接页面在最后说明;

  

添加int8_t后,以下情况属实:

     
      
  • 一个字节正好是8位。

  •   
  • {CHAR_BIT}的值为8,{SCHAR_MAX}的值为127,{SCHAR_MIN}的值为-128,{UCHAR_MAX}的值为255。

  •   

换句话说,链接的IEEE页面不适用于其他字节长度超过8 的体系结构。这与需要8位字符的POSIX一致。

- 编辑前 -

<击> 解释在page you linked to;

的注释中
<击>   

整数类型的“宽度”是用于在纯二进制系统中存储其值的位数; 实际类型可能使用比更多的位(例如,28位类型可以存储在32位实际存储中)   

答案 1 :(得分:1)

仅仅因为架构本身不处理8位字节,并不排除精确的8位整数类型。可以使用更宽寄存器的移位和掩码来处理算术,以“模拟”8位算术。