我有一个带有bool
数据成员的类,它没有被构造函数初始化。如果我做
cout << x.myBoolDataMember;
其中x
是此类的一个对象,其中bool
尚未初始化,我有时得到一个随机数而不是0或1.(我正在使用gcc
。)这种行为是否符合Standard
?
答案 0 :(得分:10)
此行为是否符合标准?
是的!在代码中使用垃圾值(未初始化)会调用未定义的行为
答案 1 :(得分:4)
是。未初始化的变量可以具有任何值。
答案 2 :(得分:0)
只要“&lt;&lt;”操作员不检查bool,这种行为是正确的 这里的问题隐藏在bool本身中:程序使用多个位来存储bool。这取决于实施。有时只能使用一位来存储bool 有时更多,而且就是这种情况。