如已经讨论过in the docs,bool
数据类型至少占用一个字节的内存。之前在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
类型的值可以是true
或false
。如下所述,bool
值表现为整数类型。bool
类型的值将参与整数促销。”
“整数类型的同义词是整数类型。整数类型的表示形式应使用纯二进制计算系统定义值”〜C++ 03 3.9.1§7
但是它定义了从bool
到int
的整体提升:
“可以将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/