C ++中bool值的所有可能值是什么?
这个问题看起来并不那么明显,而且在标准中找不到有关booltypes的更多信息。 
 根据C ++ 11标准,关于booltypes的相关保证是什么: 
-  存储:需要多less空间,忽略alignment? 是否有任何要存储的值来表示false?
-  采取的值:让b为booltypes,断言(b == true) || (b == false)(b == true) || (b == false)持有?(false < true)是否形成良好,是否成立?
  booltypes在§3.9.1,基本types中有描述。 这里相关的是第6段的一句话: 
types
bool是true或false。 47
参考脚注47提供了一些有趣的附加信息:
按照本国际标准描述的方式使用
bool值作为“未定义的”,比如通过检查一个未初始化的自动对象的值,可能会导致它看起来既不true也不true。
这只是标准对没有定义行为的程序没有要求的直接结果。
 对于bool没有大小要求,除了作为C ++内存模型的结果适用于所有types的隐式“至less一个字节”之外。 
 对bool对象的内部表示也没有要求,但是由于对整数转换的要求( true必须转换为1 , false为0 ),实现可能会倾向于select相同的表示true和1 , false和0 ,因为这使得这种转换是不必要的。 
存储:需要多less空间,忽略alignment?
实现定义,但实际上是一个字节。 它通常不会更小,因为这是最小的可能的对象大小。 例外是:
- bitfield类成员可以是一个单一的位;
-   std::vector<bool>打包值,以便每个都占用一个位; 但并不真正拥有booltypes的对象。 其他types(如std::bitset)做类似的事情,但不要假装存储bool。
是否有任何要存储的值来表示
false?
 没有; 只是当转换为数字types时, true变为1, false变为0.在实践中,这意味着实现可能使用这些值; 尽pipe在某些平台上,其他表示可能会更好。 
采取的值:让
b是一个booltypes的对象,断言(b == true) || (b == false)(b == true) || (b == false)持有?
 如果b已经被初始化或者分配了一个有效的值,断言将被保留。 如果没有初始化,那么它可能不成立; 但是,如果使用未初始化的值,则无论如何您都有未定义的行为。 事实上,该标准包含一个特定的脚注(由C ++ 11 3.9.1 / 6引用),警告: 
按照本国际标准描述的方式使用bool值作为“未定义的”,比如通过检查一个未初始化的自动对象的值,可能会导致它看起来既不正确也不正确。
更新:问题不断增长:
(false < true)是否形成良好,是否成立?
 是的,是的。 操作数被提升为int ,给出0 < 1 ,这是正确的。 
 关于bool的大小,如果我们看一下C ++标准草案中的5.3.3节的大小(这里强调我的 ): 
sizeof(char),sizeof(signed char)和sizeof(unsigned char)是1.应用于任何其他基本types(3.9.1)的sizeof的结果是实现定义的。 [注意:特别是sizeof(bool),sizeof(char16_t),sizeof(char32_t)和sizeof(wchar_t)是实现定义的 。 74 – 结束注释] […]
 关于bool的值,如果我们看第3.9.1节的基本types,第6段说: 
booltypes的值是真或假。 47
你还问:
采取的值:让b是一个booltypes的对象,断言(b == true)|| (b ==假)持有? (假的<true)是否形成良好,是否成立?
 第4.5节整体促销说: 
一个types为bool的prvalue可以被转换为inttypes的prvalue,其中false为零,true为真。
 由于操作数<被提升为int所以(false < true)保持b被正确初始化( 你不调用未定义的行为 ),那么(b == true) || (b == false)  (b == true) || (b == false)也成立。 
 有两个可能的值, false 。 
你可能观察到的任何事情都是未定义行为的结果。
在正常使用情况下,作为bool转换的数据的所有非零值被解释为true,并且所有作为bool转换的数据的零值都是false。 一个布尔必须至less有1个字节,因为C ++中的所有types都必须遵守这个质量。
但是我在这里已经开悟了,在我之上的每个人都值得高兴。 在未定义的行为场景(如未初始化或格式不正确的数据)中,bool可以同时为true和false。 这种奇怪的行为,但是然后又是什么不明确总是奇怪。 感谢大家的信息。
在评论中: 这个链接到一个相关的职位。