Для символа d я получаю странный вывод при выполнении cout << &d

Я только начал изучать C++, и я не очень понимаю, почему, когда я cout &d, он показывает char d столько раз, сколько я его уже показал + добавить 1 раз. Так что он показывает 3 раза символ "d" здесь... для строки
cout << &d << endl;

если кто-то может объяснить мне, почему, с простым словом, я бы поблагодарил его. И мне жаль, если вопрос глупый.

#include <iostream>
using namespace std;

int main() 
{

char d('d');

cout << d << endl;
cout << d << endl;
cout << &d << endl;


    return 0;   
}

1 ответ

Это потому что & (в этом контексте) является адресом оператора.

РЕДАКТИРОВАТЬ: Как отметил @MSalters, стандарт C++ имеет это как неопределенное поведение, поэтому может произойти все что угодно, но большинство современных компиляторов будут делать следующее:

Таким образом, вы фактически передаете указатель на char в cout.operator<<(), Это рассматривается как строка в стиле C и будет печатать все по этому адресу памяти до следующего \0 нуль чар. Ваш 'd' ставится там вашим char инициализация. Остальное в значительной степени случайно, что в памяти после него.

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