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í.