Imprimir um bool não inicializado usando cout (c ++)
-
23-09-2019 - |
Pergunta
Eu tenho uma aula com um bool
membro de dados que não é inicializado pelo construtor. Se eu fizer
cout << x.myBoolDataMember;
Onde x
é um objeto desta classe em que o bool
não foi inicializado, às vezes recebo um número aleatório em vez de 0 ou 1. (estou usando gcc
.) Esse comportamento é compatível com o Standard
?
Solução
Esse comportamento é compatível com o padrão?
Sim! Usando valores de lixo (não inicializados) em seu código chama Comportamento indefinido
Outras dicas
Sim. Uma variável não inicializada pode ter qualquer valor.
Assim que o operador "<<" não verificar o BOOL, esse comportamento está correto.
O problema aqui está oculto no próprio bool: o programa usa mais de um bit para armazenar o bool. Isso depende da implementação. Às vezes, apenas um bit pode ser usado para armazenar o bool.
Às vezes mais, e é esse caso.