c++字节依赖于实现

C++ Byte is implementation dependent

本文关键字:实现 依赖于 字节 c++      更新时间:2023-10-16

我一直在读C Primer Plus。

据说:请注意,byte的含义取决于实现。所以一个2字节的int在一个系统上可能是16位,在另一个系统上可能是32位。

在这里,我想我对此不确定。根据我的理解,1字节总是= 8位,所以2-byte int = 2 * 8 = 16 bits是有意义的。但从这句话听起来像是某些系统定义1字节= 16位。对吗?总的来说,我应该如何理解这句话呢?

c++标准第1.7节第1点证实了这一点:

c++内存模型中的基本存储单元是字节。字节至少足够大,可以包含基本类的任何成员的8位代码单元Unicode UTF-8编码形式,由连续序列组成实现定义的。(…)c++程序可用的内存由一个或多个内存组成连续字节序列。每个字节都有一个唯一的地址。

字节总是由至少8位组成。它们可以大于8位,尽管这是相当罕见的。

一个字节并不总是8位。在八位字节之前(如果要显式引用8位字节,则需要使用这个术语),有4位、6位和7位字节。对于[现代]编程的目的(在几乎任何语言中),您可以假设它至少是8位。

历史上,一个字节并不总是8位。今天是,但很久以前,它可能是6,7,8,9……因此,要有一种语言,可以利用硬件的细节(为了效率),但仍然让用户表达自己在一个高层次的语言,他们必须确保int类型映射到最自然适合硬件。