代码之家  ›  专栏  ›  技术社区  ›  0___________

字节是什么?

  •  0
  • 0___________  · 技术社区  · 6 年前

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

    但是:

    size of运算符生成其操作数的大小(以字节为单位)

    还有:

    当sizeof应用于类型为char、无符号的操作数时 char或有符号char(或其限定版本)结果为1

    后来:

    当应用于具有数组类型的操作数时,结果是 数组中的字节总数。

    所以如果我们考虑机器 char 超过8位时,该程序的可观察行为将不同于8位字符机。

    char foo[5];
    
    for(size_t index = 0; index < sizeof(foo) / sizeof(char); index++)
    {
        /* some code */
    }
    

    因此,在C标准理解中,字节含义可能是不同的。有人能解释一下:字节8是不同的还是不同的?

    还有一个问题。

    sizeof(char) == sizeof(array[0]) ?考虑字节大小差异

    1 回复  |  直到 6 年前
        1
  •  2
  •   StoryTeller - Unslander Monica    6 年前

    三。术语、定义和符号

    3.6 字节 可寻址的数据存储单元,足够大 保留执行的基本字符集的任何成员 环境

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

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

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