【发布时间】:2010-01-28 11:37:43
【问题描述】:
我有一个带有 bool 数据成员的类,它没有被构造函数初始化。如果我这样做了
cout << x.myBoolDataMember;
其中x 是此类的一个对象,其中bool 尚未初始化,我有时会得到一个随机数而不是0 或1。(我正在使用gcc。)这种行为是否符合与Standard?
【问题讨论】:
标签: c++ cout initialization ostream
我有一个带有 bool 数据成员的类,它没有被构造函数初始化。如果我这样做了
cout << x.myBoolDataMember;
其中x 是此类的一个对象,其中bool 尚未初始化,我有时会得到一个随机数而不是0 或1。(我正在使用gcc。)这种行为是否符合与Standard?
【问题讨论】:
标签: c++ cout initialization ostream
这种行为是否符合标准?
是的!在代码中使用垃圾值(未初始化)会调用 Undefined Behavior
【讨论】:
是的。未初始化的变量可以有任何值。
【讨论】:
bool 只有两个可能的值,false 和 true。 cout << b 输出 0 和 1 以外的其他内容的事实是未定义行为的结果,而不是 b 具有除 false 或 true 之外的“值”。
只要“
这里的问题隐藏在 bool 本身:程序使用不止一位来存储 bool。这取决于实现。有时只能使用一位来存储布尔值。
有时更多,就是这样。
【讨论】: