【问题标题】:What is a "byte" in C / C++什么是 C/C++ 中的“字节”
【发布时间】:2012-01-07 22:43:00
【问题描述】:

例如,这里是 fread 的参考:

size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );

读取一个计数元素数组,每个元素的大小为“大小字节”... 那么有多少 BITS 会读取fread(&x, 1, 1, stream)?八个还是CHAR_BIT

【问题讨论】:

  • 这是来自 Linux 联机帮助页,对吗? C标准的定义根本没有提到字节:“fread函数从指向的流中读取ptr指向的数组,直到nmemb元素的大小由size指定stream。”
  • 鉴于它来自 Linux 手册页,CHAR_BIT 保证(由 Posix)等于 8。
  • C 标准确实提到了字节。 3.6 节将字节定义为最小的可寻址单元。
  • @JeremyP:C 标准可以。 “C 标准的定义”(fread)没有。
  • 附加 $0.02:当您需要一个明确的术语来指代一段有意义的 8 位数据时,将其称为“八位字节”。

标签: c char byte fread language-lawyer


【解决方案1】:

C99,§3.6:

字节

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

和§5.2.4.2.1:

CHAR_BIT — 不是位域(字节)的最小对象的位数

因此,一个“字节”包含CHAR_BIT 位。

【讨论】:

    【解决方案2】:

    CHAR_BIT。字节的位宽由实现定义,开发人员可以通过CHAR_BIT 宏获得。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-02
      • 2020-06-06
      • 2015-02-17
      • 1970-01-01
      • 1970-01-01
      • 2011-01-25
      • 1970-01-01
      相关资源
      最近更新 更多