如已经讨论过in the docsbool数据类型至少占用一个字节的内存。之前在SO(How a bool type variable is stored in memory? (C++))上曾问过类似的问题,但此讨论和文档似乎只讨论 bool(boolean) 数据类型占用的空间量,而不是我这样做时在内存中实际发生的情况:
bool b = true;
那么内存中到底发生了什么呢?未使用此信息存储的7位会发生什么?标准是否为此规定了行为?

他们是不确定的吗?还是C++总部的某人只是这样做:

enum bool : char
{
  false = 0,
  true = 1
};

最佳答案

标准指出bool值表现为整数类型,但未在内存中指定其具体表示形式:

“C++ 03 3.9.1§6““bool类型的值可以是truefalse。如下所述,bool值表现为整数类型。bool类型的值将参与整数促销。”

“整数类型的同义词是整数类型。整数类型的表示形式应使用纯二进制计算系统定义值”〜C++ 03 3.9.1§7

但是它定义了从boolint的整体提升:

“可以将bool类型的右值转换为int类型的右值,其中false变为零,而true变为1。这些转换称为积分促销。” 〜C++ 03 4.5§4-5

以及从其他类型到bool的转换:

“将零值,空指针值或空成员指针值转换为false;其他任何值均转换为true。” 〜C++ 03 4.12§1

关于c++ - boolean 在内存中如何表示?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57496231/

10-11 22:45
查看更多