variable values bool c++ cout initialization ostream

c++ - values - boolean variable



Imprimir un bool no inicializado usando cout(C++) (3)

¿Es este comportamiento compatible con el estándar?

¡Sí! El uso de valores basura (no inicializados) en su código invoca un comportamiento indefinido

Tengo una clase con un miembro de datos bool que no ha sido inicializado por el constructor. Si lo hago

cout << x.myBoolDataMember;

donde x es un objeto de esta clase en el cual el bool no se ha inicializado, a veces obtengo un número aleatorio en lugar de 0 o 1. (Estoy usando gcc .) ¿Este comportamiento cumple con el Standard ?


Sí. Una variable no inicializada puede tener cualquier valor.


Tan pronto como el operador "<<" no verifica el bool, este comportamiento es correcto.
El problema aquí está oculto en el bool en sí: el programa usa más de un bit para almacenar el bool. Esto depende de la implementación. A veces, solo se puede usar un bit para almacenar el bool.
A veces más, y es un caso así.