什么是字节?

时间:2019-01-20 10:19:07

标签: c char language-lawyer sizeof

C标准在许多不同的地方使用字节字。通常,这与我对这个词的理解非常相似-8位长的数据块。

但是:

  

sizeof运算符产生其操作数的大小(以字节为单位)

并且:

  

将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])吗?考虑字节大小差异

1 个答案:

答案 0 :(得分:3)

  

3。术语,定义和符号

     

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

     

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

     

注2字节由连续的位序列组成,即   其中由实现定义。最低有效位是   称为低位;最重要的位称为   高阶位。

这是根据C标准的字节。它的最小大小就是保存执行环境的基本字符集所需的位数,即,如今IIRC最少为8。字节的确切大小(以位为单位)在CHAR_BIT宏中进行编码。