【问题标题】:Printing an uninitialized bool using cout (C++)使用 cout (C++) 打印未初始化的布尔值
【发布时间】:2010-01-28 11:37:43
【问题描述】:

我有一个带有 bool 数据成员的类,它没有被构造函数初始化。如果我这样做了

cout << x.myBoolDataMember;

其中x 是此类的一个对象,其中bool 尚未初始化,我有时会得到一个随机数而不是0 或1。(我正在使用gcc。)这种行为是否符合与Standard?

【问题讨论】:

    标签: c++ cout initialization ostream


    【解决方案1】:

    这种行为是否符合标准?

    是的!在代码中使用垃圾值(未初始化)会调用 Undefined Behavior

    【讨论】:

      【解决方案2】:

      是的。未初始化的变量可以有任何值。

      【讨论】:

      • 在存在未定义行为的情况下很难谈论价值。 bool 只有两个可能的值,falsetruecout &lt;&lt; b 输出 01 以外的其他内容的事实是未定义行为的结果,而不是 b 具有除 falsetrue 之外的“值”。
      • 是的。它也可以什么都不打印,0.5,“蓝色”,或者冒烟
      • 你可以变成一只猫。恶魔可能会从你的鼻子里飞出来。
      【解决方案3】:

      只要“ 这里的问题隐藏在 bool 本身:程序使用不止一位来存储 bool。这取决于实现。有时只能使用一位来存储布尔值。
      有时更多,就是这样。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-11-23
        • 2022-06-27
        • 1970-01-01
        • 1970-01-01
        • 2016-12-27
        • 2012-11-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多