这有点像学术研究。
虽然布尔值会转化为数字(而且,就像其他所有东西一样,它们最终将在计算机内存中由数字基本表示),但布尔值不是数字。你的bool
可以取值true
或false
。没有语义描述它占用了多少“字节”,即使你需要至少 1 位信息(在信息学意义上)来存储该数据。
与此相关的奇怪现象还有,C++标准为整数类型指定最小宽度,但不包括bool
,因为它不是整数类型。同样,C限制宏也不包含bool
(尽管这更可能是因为早期C不存在 bool
)。该书显然直接使用了这些信息,连同浮点类型及其数学约束一起(请注意,这些约束也没有以 byte 宽度的形式给出)。
然而,标准确实承认bool
“具有与实现定义的无符号整型相同的对象表示、值表示和对齐要求”(ref),因为即使是标准也需要承认它存在于我们的物理现实中。然后,按照这个路线,我们甚至不需要遵循标准:我们知道你的bool
将需要至少一个字节,因为每个对象都占用至少一个字节......除非你将其打包到vector<bool>
或位域中。
如果我写那本书,我可能会至少留下这样的说明。
bool
、有符号和无符号整数类型及其cv限定版本,统称为整型。整型的同义词是整数类型。 - rosshjb
1 * sizeof(char)
)。可能有一个注释在某个地方。 - Artyer