Что печатает char() в C++

Я пытался найти документацию по этому вопросу, но, похоже, нет никаких определенных ответов на этот вопрос. Я пробовал в программе-примере, и вроде \0 но надежно ли это поведение? Что инициализирует char() и соответствует ли это стандарту С++.

int main()
{
  std::cout<<char()<<std::endl;

  return 0; 
}
char() ничего не печатает. Он создает инициализированное значением (например, инициализированное нулем в данном случае) char временное. Что вы будете делать с ним после этого, зависит только от вас.
WhozCraig 20.03.2022 03:02

Пожалуйста, отредактируйте свой вопрос, чтобы показать код, поведение которого вы хотите узнать. "что выводит char()" — довольно расплывчатый язык. Конкретный код лучше всего в этом случае определить, что вы имеете в виду.

Wyck 20.03.2022 03:12

Я добавил простую программу. @WhozCraig, ты имеешь в виду числовое 0? Когда я запускаю программу, которую я предоставил, она пуста.

TWhite 20.03.2022 05:12

Это перегрузка для char, влияющая на это operator << (что в основном делает нада на nullchar, что у вас есть). Однако его все еще называют. Вы можете увидеть это вживую, если вы проверите вызовы дизассемблирования.

WhozCraig 20.03.2022 05:26
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
5
48
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Тот факт, что char() возвращает \0, является нормальным и надежным (целочисленные переменные инициализируются 0 с таким синтаксисом, а указатели инициализируются nullptr). Например, unsigned short int() также вернет 0. Очевидно, что для char это не символ «0», а символ NUL.

Затем, когда вы пытаетесь напечатать это, вы пытаетесь напечатать char, который используется в char* строках, чтобы отметить конец строки... Поэтому неудивительно, что он вообще не печатается, даже как один символ.

вообще не печатается неверен. Символ NUL печатается вместе с показанным оператором. Бывает так, что терминал ничего не показывает. Но если вы перенаправите вывод в файл, вы заметите, что в файле есть один байт, и этот байт имеет нулевое значение.
j6t 20.03.2022 09:27

@ j6t Мы имеем дело не с записью в двоичный файл, а с КОНСОЛЬ ... Что особенно важно, как вы это знаете - например, запись TAB в двоичном файле - это только символ 9, а на консоль, это (обычно) от 1 до 8 пробелов...

Wisblade 20.03.2022 11:01

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