这有点学术性的东西。
尽管它们会转换为数字(并且,与其他所有事物一样,它们最终将基本上由计算机内存中的数字表示),但布尔值不是数字。你的bool
可以取值true
,或值false
。即使您确实需要至少 1 位信息(在信息学意义上)来存储该数据,也没有关于需要多少“字节”的语义描述。
还有一个相关的奇怪之处C++ 标准给出了整数类型的最小宽度 http://eel.is/c++draft/basic.fundamental#tab:basic.fundamental.width,离开bool
因为它不是整数类型。相似地,C 限制宏不包含以下宏:bool http://eel.is/c++draft/support.limits#climits.syn(尽管这可能更多是因为bool
s 在早期的 C) 中不存在。这本书显然或多或少直接使用了这些信息,添加了浮点类型及其数学约束(请注意,这些也不是以字节宽度给出的)。
然而,该标准确实继续承认bool
“与实现定义的无符号整数类型具有相同的对象表示、值表示和对齐要求” (ref http://eel.is/c++draft/basic.fundamental#10),因为即使是标准也需要承认它存在于我们的物理现实中。那么,沿着这条路走下去,我们甚至不需要标准:我们知道您的bool
至少需要一个字节,因为每个对象至少占用一个字节......除非你将它打包到一个vector<bool>
或位域。
如果我正在写那本书,我可能至少会留下这样的注释。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)