我有一个带有bool
未由构造函数初始化的数据成员的类。如果我做
cout << x.myBoolDataMember;
没有初始化x
的此类的对象在哪里,我有时会得到一个随机数而不是 0 或 1。(我正在使用。)这种行为是否符合?bool
gcc
Standard
我有一个带有bool
未由构造函数初始化的数据成员的类。如果我做
cout << x.myBoolDataMember;
没有初始化x
的此类的对象在哪里,我有时会得到一个随机数而不是 0 或 1。(我正在使用。)这种行为是否符合?bool
gcc
Standard
Is this behavior compliant with the standard?
Yes! Using garbage values(uninitialized) in your code invokes Undefined Behavior
Yes. An uninitialized variable can have any value.
只要“<<”运算符不检查布尔值,这种行为就是正确的。
这里的问题隐藏在 bool 本身:程序使用不止一位来存储 bool。这取决于实现。有时只能使用一位来存储布尔值。
有时更多,而且是这样的情况。