C ++ Инициализация значений - логическое значение - PullRequest
0 голосов
/ 09 марта 2019

Как мы уже знаем, если мы не инициализируем объявленное значение, оно будет содержать случайную часть информации, найденную в ОЗУ.А что если мы говорим о буле?По умолчанию это false (0) или тоже случайное значение true (1)?

1 Ответ

0 голосов
/ 09 марта 2019

Логические значения являются примитивными типами данных без значения по умолчанию. Ни один примитивный тип данных не имеет значения по умолчанию.

Кроме того, отсутствие инициализации объявленной переменной не обязательно делает ее значение случайным. Это зависит от того, имеет ли ваш тип данных конструктор по умолчанию (тот, который не принимает аргументов и неявно вызывается), который его инициализирует, или нет. Обычные старые типы данных (к которым относятся примитивные типы) имеют «пустой» конструктор по умолчанию, который не назначает никаких начальных значений. Напротив, типы типа std::string имеют непустой конструктор по умолчанию, который инициализирует строку в четко определенное состояние.

В отличие от int s и других примитивных типов, булевы значения имеют специальный оператор преобразования: чтобы преобразовать что-либо в bool, сначала проверяется, является ли это значение 0 или нет, и в зависимости от В результате возвращается 0 или не 0 байт (как обычно, bool s реализуются как байты). Я не уверен, существует ли хотя бы одно однобайтовое представление для true, или является ли любой не 0 байт истинным логическим значением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...