COUTを使って初期化されていないブール値を印刷する(C ++)
-
23-09-2019 - |
質問
私は、コンストラクタで初期化されませんbool
データメンバを持つクラスを持っています。私が行う場合は、
cout << x.myBoolDataMember;
x
はbool
が初期化されていない中で、このクラスのオブジェクトであり、私は時々、むしろ0または1以上の乱数を取得します(私はgcc
を使用していますが。)Standard
この行動準拠していますか。
解決
標準でこの行動準拠していますか。
はい!あなたのコードを呼び出すで使用してごみ値(初期化されていない)の未定義の動作の
他のヒント
はい。初期化されていない変数は任意の値を持つことができます。
とすぐにオペレータがブール値をチェックしない「<<」として、この動作は正しいです。
問題は、ここでブール値自体に隠されている:プログラムはBOOLを保存するために、複数のビットを使用しています。これは、実装に依存しています。時には、1ビットだけがブール値を格納するために使用することができます。
時にはより、それは、このような場合である。
所属していません StackOverflow