可能重复:
带有布尔值的 C++ 位域打包
bool
在位域定义中使用 C++ 的关键字是否保证安全?
就像是:
struct flags {
bool a : 1;
bool b : 1;
}
从 C++03 9.6 “位域”:
位域应具有整数或枚举类型(3.9.1)。普通(既不是显式签名也不是无符号)char、short、int 或 long 位字段是有符号还是无符号是实现定义的。bool 值可以成功地存储在任何非零大小的位域中。...
如果值 true 或 false 存储到任何大小的 bool 类型的位域(包括一位位域),则原始 bool 值和位域的值应比较相等。...
3.9.1/7“基本类型”指定它bool
是一个整数类型。
是的。在实践中,您可以将sizeof(bool) * CHAR_BIT
其用作了解可用位数的指南。
来自 C++98,第 9.6.3 节
位域应具有整数或枚举类型(3.9.1)。
来自 C++98,第 3.9.1.7 节
bool、char、wchar_t 类型以及有符号和无符号整数类型统称为整数类型