在C标准中(我的参考尤其是ISO / IEC 9899:2011(C11))在§3.6下声明:
3.6
1字节
数据存储的可寻址单元,其大小足以容纳执行环境的基本字符集的任何成员
2注意1可以唯一表示一个对象的每个单独字节的地址。
3注2 一个字节由一个连续的比特序列组成,其数量由实现定义。最低有效位称为低阶位;最重要的位称为高阶位。
为什么会这样?我认为在信息技术中,一个字节的大小是绝对固定的,要正好由8位组成。
为什么标准会做出这种看似疯狂的声明?
也:如果字节大小不固定,我们如何谈论f.e.假设是64位系统,则char
由8位组成,int
由32位(4字节)组成?
我认为字节的大小在信息技术中绝对固定为正好由8位组成。
没有那就是“字节”的演变,现在已经很普遍了8。
由于各种技术(和业务)原因,出现了其他9、16、18、32、64 ....的值。今天它们的稀有性确实令人惊讶,CHAR_BIT
可能不是8。
Recall C是
非常便携式,并且可容纳多种体系结构。
如果字节大小不固定,我们如何谈论f.e.假设使用64位系统,一个char将由8位和一个32位int(4字节)的int组成?
在C中,通常不能。 char
可能是9位或64位,依此类推。如今,这种系统很少见。
作为将int
大小驱动到某个宽度的要求,请避免使用“假设64位系统”。适用更多因素。