Я понял, что то, что мы называем символами, на самом деле является числовым кодом
Все в компьютере хранится в виде бит, сгруппированных по байтам.
Символ - абстракция для упрощения программирования, и есть различные таблицы кодировки для того, чтобы преобразовывать байты в символы при выводе на экран.
Количество байт, нужных на символ зависит собственно от кодировки.
В старых кодировках один байт означал один символ, в современных UTF, количество байт может быть разное (до 6 байт на символ в виде иероглифа).
а потому символьным литералам выделяется столько же памяти, сколько и типу int (4 байта).
Юзай typeid чтобы уточнить тип данных
Но я не совсем понял, как в однобайтный char вмещается четырехбайтный символ?
никак, это не char.
в С по дефолту char это однобайтный символ в ascII
И когда я объявляю char test = 'A'; то сколько в компьютере выделилось памяти: 1 байт или 4?
Ты же сам указываешь тип при объявлении. Надо было привести код целиком.
(Если попробовать sizeof(test), то выйдет, что все таки 1. Но ведь 'A' - это 4 байта?)
'A' это значение, а не тип. Может быть это int?