Печать неинициализированного bool с использованием cout (C ++) - PullRequest
8 голосов
/ 28 января 2010

У меня есть класс с bool членом данных, который не инициализируется конструктором.Если я делаю

cout << x.myBoolDataMember;

, где x - объект этого класса, в котором bool не был инициализирован, я иногда получаю случайное число вместо 0 или 1.gcc.) Соответствует ли это поведение Standard?

Ответы [ 3 ]

10 голосов
/ 28 января 2010

Соответствует ли это поведение стандарту?

Да! Использование значений мусора (неинициализированных) в вашем коде вызывает Неопределенное поведение

4 голосов
/ 28 января 2010

Да. Неинициализированная переменная может иметь любое значение.

0 голосов
/ 28 января 2010

Как только оператор «<<» не проверяет bool, это поведение корректно. <br> Проблема здесь скрыта в самом bool: программа использует более одного бита для хранения bool. Это зависит от реализации. Иногда для хранения bool может использоваться только один бит.
Иногда больше, и это такой случай.

...