Apparently there are architectures that don't have 8-bit bytes.
似乎这样的体系结构会排除存在int8_t
(在stdint.h
中定义)类型,因为根据我的理解,C不能创建小于CHAR_BIT
的数据类型。 / p>
也就是说,IEEE stdint.h def似乎要求存在这样的类型(以及其他类型),只允许64位不存在于不支持它的架构上。
我错过了什么吗?
答案 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位算术。