“a”是什么;字节";,根据C11?

“a”是什么;字节";,根据C11?,c,c11,C,C11,3.6 字节:可寻址的数据存储单元,其大小足以容纳基本字符的任何成员 执行环境的集合 注1可以唯一地表示对象每个字节的地址 那么,当我得出标准只针对字节可寻址内存体系结构的结论时,我是否正确地解释了这一点?还是我读的方式不正确?是的,简单地说: 根据标准,字节是最小的可寻址内存位置 是的,我认为你阅读标准的方式不对。我认为它所说的是(意译): 最小的可单独寻址的内存单元,可包含 基本字符集(…)的成员称为字节 也就是说,该标准在其范围内通过术语字节定义了它的含义,因此,拒绝使用不符合标准的相同术

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

注1可以唯一地表示对象每个字节的地址

那么,当我得出标准只针对字节可寻址内存体系结构的结论时,我是否正确地解释了这一点?还是我读的方式不正确?

是的,简单地说:

根据标准,字节是最小的可寻址内存位置

是的,我认为你阅读标准的方式不对。我认为它所说的是(意译):

最小的可单独寻址的内存单元,可包含 基本字符集(…)的成员称为字节


也就是说,该标准在其范围内通过术语字节定义了它的含义,因此,拒绝使用不符合标准的相同术语的定义。

从技术上说,您是对的,这确实表明符合标准的C实现必须具有字节寻址内存。但是C标准并不要求一个字节只有八位。一个实现可以将“字节”定义为64位,就标准而言,这是最好的。标准也不要求“字节可寻址”是单个操作,因此处理器上仅支持64位读取的8位字节仍然有效,只要编译器确保执行所需的屏蔽和移位以获得正确的结果。

No,我认为标准允许字节大于最小的可寻址内存位置。@PhilippWendler:为什么?如果不是一个字节,你认为最小的可寻址内存位置是什么?该标准规定了一个字节的两个要求:足够大以容纳基本字符集和内存可寻址。在一个系统中,“基本字符集”需要16位,但8位的单位是可寻址的,一个字节在IMO中需要16位。我同意@PhilippWendler的观点:该标准明确规定,一个字节必须足够大,以容纳基本字符集的任何成员。如果该内存单元大于可单独寻址的最小内存单元,则标准规定一个字节大于可单独寻址的内存单元。假设一个基本字符集需要12位来表示机器上实现的每个字符,每个字符有8位的单独可寻址内存单元。它是C中可寻址的最小内存单元。任何使用另一种语言(如CPU的指令集)的可寻址性概念与C标准中的定义完全无关。当然,这与编写编译器的人有关,因为他们必须发出一些操作码,所以他们可能会选择字节的大小,以方便CPU。标准并不关心它是否方便。这三个答案都是好的,都很清晰。所以我接受最高的投票。但什么是“基本字符集”?这里似乎没有定义?@Vorac这里有基本的源字符集和基本的执行字符集。基本执行字符集是什么意思,它在5.2.1中定义。