С точки зрения архитектуры машины, char - это значение, которое может быть представлено в 8 битах (что когда-либо происходило с не 8-битными архитектурами?).
Число битов в int не фиксировано; Я считаю, что оно определяется как «естественное» значение для конкретной машины, т. Е. Количество битов, которыми легче / быстрее всего манипулировать с этой машиной.
Как уже упоминалось, все значения в компьютерах хранятся в виде последовательностей двоичных битов. Как эти биты интерпретируются, меняется. Их можно интерпретировать как двоичные числа или как код, представляющий что-то еще, например, набор буквенных символов или множество других возможностей.
Когда C был впервые разработан, предполагалось, что 256 кодов было достаточно для представления всех символов в алфавите. (На самом деле, это было, вероятно, не предположение, но в то время оно было достаточно хорошим, и дизайнеры старались сохранить язык простым и соответствовать нынешним архитектурам машин). Следовательно, 8-битное значение (256 возможностей) считалось достаточным для хранения буквенно-буквенного кода, а тип данных char был определен для удобства
Отказ от ответственности: все, что написано выше, это мое мнение или предположение. Дизайнеры C - единственные, кто действительно может ответить на этот вопрос.
Более простой, но вводящий в заблуждение ответ заключается в том, что вы не можете сохранить целочисленное значение 257 в char , но вы можете в int .
натуральный