我一直在阅读C Primer Plus。
据说: 请注意,byte的含义取决于实现。因此,一个2字节的int在一个系统上可以是16位,在另一个系统上可以是32位。
我认为我不确定这一点。根据我的理解,1个字节总是= 8位,所以2-byte int = 2 * 8 = 16 bits
是有意义的。但是从这个声明来看,听起来有些系统定义了1个字节= 16位。那是对的吗?
一般来说,我应该如何理解这一陈述?
答案 0 :(得分:7)
C ++标准第1.7节第1点证实了这一点:
C ++内存模型中的基本存储单元是字节。的 甲 byte至少足以包含basic的任何成员 执行字符集(2.3)和8位代码单元 Unicode UTF-8编码形式,由一个连续的序列组成 位数, 实现定义 。 (......) C ++程序可用的内存由一个或多个组成 连续字节序列。每个字节都有一个唯一的地址。
答案 1 :(得分:4)
字节总是由至少 8位组成。它们可能大于8位,但这种情况并不常见。
答案 2 :(得分:3)
一个字节并不总是8位。在八位字节之前(如果要显式引用8位字节,则需要使用的术语),有4位,6位和7位字节。出于[现代]编程的目的(几乎任何语言),你可以假设它至少是8位。
答案 3 :(得分:2)
历史上,一个字节并不总是8位。今天它是,但很久以前,它可能是6,7,8,9 ...所以有一种语言可以利用硬件的细节(为了提高效率),但仍然让用户表达自己更高一点在语言级别上,他们必须确保int类型被映射到最适合硬件的地方。