Impression d'une bool non initialisée en utilisant Cout (C ++)
-
23-09-2019 - |
Question
J'ai une classe avec un membre de données bool
qui n'est pas initialisé par le constructeur. Si je fais
cout << x.myBoolDataMember;
où x
est un objet de cette classe dans laquelle le bool
n'a pas été initialisé, je reçois parfois un nombre aléatoire plutôt que 0 ou 1. (j'utilise gcc
.) Est-ce un comportement conforme à la Standard
?
La solution
Ce comportement est conforme à la norme?
Oui! L'utilisation de valeurs de déchets (non initialisée) dans votre code invoque Comportement non défini
Autres conseils
Oui. Une variable non initialisée peut avoir une valeur.
Dès que « << » opérateur ne vérifie pas le bool, ce comportement est correct.
Le problème ici est caché dans le bool lui-même: programme utilise plus d'un bit pour stocker le bool. Cela dépend de la mise en œuvre. Parfois, un seul bit peut être utilisé pour stocker le bool.
Parfois plus, et il est un tel cas.