C标准在许多不同的地方使用字节这个词。大多数情况下,它与我对这个词的理解非常相似——8位长的数据块。
但是:
size of运算符生成其操作数的大小(以字节为单位)
还有:
当sizeof应用于类型为char、无符号的操作数时 char或有符号char(或其限定版本)结果为1
后来:
当应用于具有数组类型的操作数时,结果是 数组中的字节总数。
所以如果我们考虑机器 char 超过8位时,该程序的可观察行为将不同于8位字符机。
char
char foo[5]; for(size_t index = 0; index < sizeof(foo) / sizeof(char); index++) { /* some code */ }
因此,在C标准理解中,字节含义可能是不同的。有人能解释一下:字节8是不同的还是不同的?
还有一个问题。
是 sizeof(char) == sizeof(array[0]) ?考虑字节大小差异
sizeof(char) == sizeof(array[0])
三。术语、定义和符号 3.6 字节 可寻址的数据存储单元,足够大 保留执行的基本字符集的任何成员 环境 注1:可以表示每个字节的地址。 唯一的对象。 注2:字节由连续的位序列组成,数字 其中是实现定义的。最低有效位是 被称为低阶位;最高有效位被称为 高阶位。
三。术语、定义和符号
3.6 字节 可寻址的数据存储单元,足够大 保留执行的基本字符集的任何成员 环境
注1:可以表示每个字节的地址。 唯一的对象。
注2:字节由连续的位序列组成,数字 其中是实现定义的。最低有效位是 被称为低阶位;最高有效位被称为 高阶位。
这是符合C标准的字节。它的最小大小只是保存执行环境的基本字符集所需的位数,即现在最少8个IIRC。字节的确切大小(以位为单位)编码在 CHAR_BIT 宏。
CHAR_BIT