В отличие от C++, в C символьный литерал всегда имеет тип int
.
Но почему тогда у нас есть тип char
для хранения символьного значения?
В вопросе Почему литералы символов C представляют собой целые числа вместо символов? < / а>,
обсуждается, почему символьные литералы имеют тип int
в C. Но мой вопрос не об этом.
Внутри вопроса Если символьные константы имеют тип `int', почему они присваиваются переменным типа `char`? тогда мы углубляемся в вопрос, почему мы на самом деле присваиваем символьные литералы переменным типа char
если они типа int
, но предоставленные ответы оставили озабоченность, зачем вообще нужен тип char
.
Мои вопросы сейчас:
- Почему у нас тип
char
, если любые символьные литералы всегда имеют типint
? - Тогда не является ли тип
char
избыточным? - Какова цель типа
char
, если он кажется избыточным?
char
сейчас кажется мне неверной. Для меня язык должен был быть определен по-другому в этой теме, чтобы дать модификатор или что-то в этом роде, чтобы указать компилятору, что контекст, если необходимо, относится к буквальным символам, а не к обычным целочисленным значениям. , используя типint
. - person RobertS supports Monica Cellio   schedule 23.12.2019char
и литеральная константа char являются двумя отдельными объектами, размеры которых определяются в соответствии со стандартом как наименьшая единица памяти, доступная в системе, для первого и как стандартный типint
для второго. Любая попытка сделать эквивалентность между типомchar
и литералом char, то есть'abc'
, формально неверна. - person Frankie_C   schedule 23.12.2019char
подразумевает преобразование типа изint
вchar
. - person Frankie_C   schedule 23.12.2019'A'
не обязательно должна существовать по адресу - например. может быть значением в исполняемом коде. - person chux - Reinstate Monica   schedule 23.12.2019