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

StackOverflow https://stackoverflow.com/questions/2154132

Вопрос

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

cout << x.myBoolDataMember;

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

Это было полезно?

Решение

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

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top