Ich habe eine Klasse mit einem Datenelement bool
, das nicht vom Konstruktor initialisiert wird. Wenn ich das tue
wo x
ein Objekt dieser Klasse ist, in der bool
nicht initialisiert wurde, bekomme ich manchmal eine Zufallszahl anstatt 0 oder 1. (Ich benutze gcc
.) Ist dieses Verhalten konform? mit dem Standard
?
Entspricht dieses Verhalten dem Standard?
Ja! Die Verwendung von Garbage-Werten (nicht initialisiert) in Ihrem Code ruft Undefiniertes Verhalten
auf Sobald "& lt; & lt;" Der Operator überprüft den Bool nicht, dieses Verhalten ist korrekt.
Das Problem hier ist im Bool selbst versteckt: Programm verwendet mehr als ein Bit, um die Bool zu speichern. Dies ist abhängig von der Implementierung. Manchmal kann nur ein Bit zum Speichern des Bool verwendet werden.
Manchmal mehr, und es ist so ein Fall.
Tags und Links c++ initialization cout ostream