Stampa di un bool inizializzato utilizzando cout (C ++)
-
23-09-2019 - |
Domanda
Ho una classe con un membro di dati bool
che non è inizializzata dal costruttore. Se faccio
cout << x.myBoolDataMember;
dove x
è un oggetto di questa classe, in cui non è stato inizializzato il bool
, a volte ottengo un numero a caso, piuttosto che 0 o 1. (sto usando gcc
.) È questo comportamento conforme alla Standard
?
Soluzione
E 'questo comportamento compatibile con lo standard?
Sì! I valori della spazzatura che utilizzano (non inizializzato) nei tuoi invoca codice comportamento non definito
Altri suggerimenti
Sì. Una variabile non inizializzata può avere qualsiasi valore.
Non appena "<<" operatore non controlla il bool, questo comportamento è corretto.
Il problema qui è nascosto nel bool sé: programma utilizza più di un bit per memorizzare il bool. Questo dipende dalla implementazione. A volte un solo bit può essere utilizzato per memorizzare il bool.
A volte di più, e si tratta di un caso del genere.