Я пытался найти документацию по этому вопросу, но, похоже, нет никаких определенных ответов на этот вопрос. Я пробовал в программе-примере, и вроде \0
но надежно ли это поведение? Что инициализирует char() и соответствует ли это стандарту С++.
int main()
{
std::cout<<char()<<std::endl;
return 0;
}
Пожалуйста, отредактируйте свой вопрос, чтобы показать код, поведение которого вы хотите узнать. "что выводит char()" — довольно расплывчатый язык. Конкретный код лучше всего в этом случае определить, что вы имеете в виду.
Я добавил простую программу. @WhozCraig, ты имеешь в виду числовое 0
? Когда я запускаю программу, которую я предоставил, она пуста.
Это перегрузка для char
, влияющая на это operator <<
(что в основном делает нада на nullchar, что у вас есть). Однако его все еще называют. Вы можете увидеть это вживую, если вы проверите вызовы дизассемблирования.
@TWhite читал о конструктор по умолчанию и нулевая инициализация. char()
похож на int()
или long()
и дает то же значение в указанных типах. Имеют ли встроенные типы конструкторы по умолчанию?, Делает ли "int a = int();" обязательно дать мне ноль?, Имеют ли встроенные типы конструкторы по умолчанию?
Тот факт, что char()
возвращает \0
, является нормальным и надежным (целочисленные переменные инициализируются 0 с таким синтаксисом, а указатели инициализируются nullptr
). Например, unsigned short int()
также вернет 0. Очевидно, что для char
это не символ «0», а символ NUL
.
Затем, когда вы пытаетесь напечатать это, вы пытаетесь напечатать char
, который используется в char*
строках, чтобы отметить конец строки... Поэтому неудивительно, что он вообще не печатается, даже как один символ.
@ j6t Мы имеем дело не с записью в двоичный файл, а с КОНСОЛЬ ... Что особенно важно, как вы это знаете - например, запись TAB в двоичном файле - это только символ 9, а на консоль, это (обычно) от 1 до 8 пробелов...
char()
ничего не печатает. Он создает инициализированное значением (например, инициализированное нулем в данном случае)char
временное. Что вы будете делать с ним после этого, зависит только от вас.