Drucken eines nicht initialisierten bool mit cout (C ++)

8

Ich habe eine Klasse mit einem Datenelement bool , das nicht vom Konstruktor initialisiert wird. Wenn ich das tue

%Vor%

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 ?

    
Ari 28.01.2010, 11:37
quelle

3 Antworten

10
  

Entspricht dieses Verhalten dem Standard?

Ja! Die Verwendung von Garbage-Werten (nicht initialisiert) in Ihrem Code ruft Undefiniertes Verhalten

auf     
Prasoon Saurav 28.01.2010, 11:40
quelle
4

Ja. Eine nicht initialisierte Variable kann einen beliebigen Wert haben.

    
kennytm 28.01.2010 11:40
quelle
0

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.

    
avp 28.01.2010 13:30
quelle

Tags und Links