Ответ 1
false
.
В проекте С++ 14 черновик N4296, раздел 8.5 (Инициализаторы), пункт 6, пункт 1 списка и ссылки в нем, и пункт 8, пункт 4 списка.
Какое значение использует конструктор по умолчанию для типа bool в С++?
Например, запись
int i = int();
гарантирует, что переменная i будет всегда начинаться с 0.
Я предполагаю, что такая процедура инициализации также возможна:
bool b = bool();
Но, к сожалению, я не смог найти нигде, для которого значение такого конструктора bool по умолчанию определено для возврата. Является ли переменная b всегда инициализирована символом false или true.
false
.
В проекте С++ 14 черновик N4296, раздел 8.5 (Инициализаторы), пункт 6, пункт 1 списка и ссылки в нем, и пункт 8, пункт 4 списка.
bool является интегральным типом, а значение-инициализация должна быть равна нулю.
Является ли переменная b всегда инициализирована ложным или истинным?
ложь
Преобразование true
в тип integer
даст 1
, а преобразование false
приведет к 0
(4.5/4
и 4.7/4
)
Очень простой тестовый код
#include<iostream>
int main()
{
bool b=bool();
if(!b)
{
std::cout<<"b: false";
}
}
B также инициализируется нулем.
bool ведет себя так, как если бы он был объявлен:
enum bool {false,true};
Он является интегральным типом и может быть передан в int как значения 0 и 1 (соответственно), а его значение по умолчанию - false.