Ch++” or “ch+1” in C++?

181
30 декабря 2021, 11:40
char ch;    
cin.get(ch);    
cout << ch+1;   

Почему cout думает что ch - это int ? А в случае ++ch нет.

Answer 1

Ключевыми моментами здесь является то, что

  1. По-определению, выражение ++ch эквивалентно выражению ch = ch + 1.

  2. Все целочисленные арифметические вычисления в языке С++ делаются в типе int (или unsigned int) как минимум. Типы меньшего размера автоматически преобразуются к типу int еще до начала вычислений.

Все вычисления в выражении ch + 1 делаются в типе int и результат этого выражения имеет тип int. Когда вы печатаете этот результат сразу - он интерпретируется, как значение типа int.

Выражение ++ch эквивалентно выражению ch = ch + 1. Сначала вычисляется результат выражения ch + 1 (который все так же будет иметь тип int), а затем он помещается обратно в переменную ch. Сама сама переменная ch становится результатом всего выражения ++ch. Тип значения при этом становится char.

READ ALSO
Проблема с инициализацией

Проблема с инициализацией

у меня проект состоит из 3-х файлов : Header - с прототипами ф-ций Source - с функциями Source1 - с выводом функций на экран Проблема в том, что я хочу написать...

219
Как начать перебор std::list с N-го элемента?

Как начать перебор std::list с N-го элемента?

Есть два алгоритма перебора листа:

197
Как используя QFileDialog загрузить в массивы численные данные в Qt Creator

Как используя QFileDialog загрузить в массивы численные данные в Qt Creator

Создал диалоговое окно для выбора файлаtxt

158
Поиск в бинарном дереве

Поиск в бинарном дереве

Нужно проверить есть ли элемент Х в бинарном деревеМоя функция Find работает рандомно, то находит то не находит (хотя он есть)

110