这有点学术性。
尽管它们会转换为数字(而且,就像其他所有东西一样,它们最终将在您的计算机内存中基本由数字表示),但布尔值不是数字。您bool可以取值true,或取值false。没有语义描述需要多少“字节”,即使您确实需要至少 1 位信息(在信息学意义上)来存储该数据。
还有一个相关的奇怪之处,即 C++ 标准为整数类型提供了最小宽度,bool因为它不是整数类型而被遗漏。类似地,C 限制宏不包括 forbool(尽管这可能更多,因为bools 在早期的 C 中不存在)。这本书显然或多或少直接使用了这些信息,添加了浮点类型及其数学约束(注意这些也不是以字节宽度给出的)。
然而,标准确实继续承认bool “具有与实现定义的无符号整数类型相同的对象表示、值表示和对齐要求”(ref),因为即使标准也需要承认它存在于我们的物理中现实。沿着这条路走下去,我们甚至不需要标准:我们知道您bool将需要至少一个字节,因为每个对象至少占用一个字节......除非您将它打包到一个vector<bool>或位域中。
如果我正在写那本书,我可能至少会为此留下一张便条。
| 归档时间: |
|
| 查看次数: |
96 次 |
| 最近记录: |