似乎这样的体系结构会排除int8_t
(定义在stdint.h
)类型的存在,因为根据我的理解,C 不能创建小于 a 的数据类型CHAR_BIT
。
也就是说,IEEE stdint.h def似乎要求存在这种类型(以及其他类型),只允许 64 位在不支持它的架构上不存在。
我错过了什么吗?
似乎这样的体系结构会排除int8_t
(定义在stdint.h
)类型的存在,因为根据我的理解,C 不能创建小于 a 的数据类型CHAR_BIT
。
也就是说,IEEE stdint.h def似乎要求存在这种类型(以及其他类型),只允许 64 位在不支持它的架构上不存在。
我错过了什么吗?
编辑:正如@JasonD 在下面的评论中指出的那样,链接页面在最后声明;
添加 int8_t 的结果如下:
一个字节正好是 8 位。
{CHAR_BIT} 的值为 8,{SCHAR_MAX} 的值为 127,{SCHAR_MIN} 的值为 -128,{UCHAR_MAX} 的值为 255。
换句话说,链接的 IEEE 页面不适用于字节长度不是 8 的架构。这与需要 8 位字符的 POSIX 一致。
-- 编辑前 --
解释在您链接到
的页面上的注释中;
整数类型的“宽度”是用于在纯二进制系统中存储其值的位数;实际类型可能使用比这更多的位(例如,28 位类型可以存储在 32 位实际存储中)
仅仅因为架构本身不处理 8 位字节,并不排除精确的 8 位整数类型。可以使用更宽寄存器的移位和掩码来处理算术以“模拟”8 位算术。