为什么用实现变量定义一个字节的大小(以位为单位)?我以为一个字节总是8位一致[重复]

问题描述 投票:0回答:1

在C标准中(我的参考尤其是ISO / IEC 9899:2011(C11))在§3.6下声明:

3.6

1字节

数据存储的可寻址单元,其大小足以容纳执行环境的基本字符集的任何成员

2注意1可以唯一表示一个对象的每个单独字节的地址。

3注2 一个字节由一个连续的比特序列组成,其数量由实现定义。最低有效位称为低阶位;最重要的位称为高阶位。

为什么会这样?我认为在信息技术中,一个字节的大小是绝对固定的,要正好由8位组成。

为什么标准会做出这种看似疯狂的声明?

也:如果字节大小不固定,我们如何谈论f.e.假设是64位系统,则char由8位组成,int由32位(4字节)组成?

c byte language-lawyer bit
1个回答
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位系统”。适用更多因素。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.