8

我有一个带有bool未由构造函数初始化的数据成员的类。如果我做

cout << x.myBoolDataMember;

没有初始化x的此类的对象在哪里,我有时会得到一个随机数而不是 0 或 1。(我正在使用。)这种行为是否符合?boolgccStandard

4

3 回答 3

10

Is this behavior compliant with the standard?

Yes! Using garbage values(uninitialized) in your code invokes Undefined Behavior

于 2010-01-28T11:40:25.593 回答
4

Yes. An uninitialized variable can have any value.

于 2010-01-28T11:40:27.793 回答
0

只要“<<”运算符不检查布尔值,这种行为就是正确的。
这里的问题隐藏在 bool 本身:程序使用不止一位来存储 bool。这取决于实现。有时只能使用一位来存储布尔值。
有时更多,而且是这样的情况。

于 2010-01-28T13:30:48.787 回答