Ну, я полностью понимаю самые основные типы данных C, такие как short, int, long, float, если быть точным, все числовые типы. Эти типы необходимы, чтобы знать, что они выполняют правильные операции с правильными числами. Например, чтобы использовать FPU для добавления двух чисел с плавающей запятой. Поэтому компилятор должен знать, что это за тип.
Но когда дело доходит до персонажей, я немного не в себе. Я знаю, что базовый тип данных C предназначен для кодирования символов ASCII. Но чего я не знаю, так это зачем вообще нужен другой тип данных для символов. Почему бы вам просто не использовать 1-байтовое целочисленное значение для хранения символа ASCII. Если вы вызываете printf, вы указываете тип данных в вызове, поэтому вы можете сказать printf, что целое число представляет символ ASCII. Я не знаю, как cout разрешает тип данных, но я думаю, вы могли бы просто указать это как-то.
Другое дело, если вы хотите использовать Unicode, вы должны использовать тип данных wchar. Но что, если я хочу использовать какую-то другую, например, ISO или Windows кодировку вместо UTF? Потому что wchar кодирует символы как UTF-16 или UTF-32 (я читал, что это специфично для компилятора). И что, если я захочу использовать, например, какое-то воображаемое новое 8-байтовое кодирование текста? Какой тип данных я должен использовать для этого? Я на самом деле очень смущен этим, потому что я всегда ожидал, что если я хочу использовать UTF-32 вместо ASCII, я просто говорю компилятору: «получить значение UTF-32 символа, который я набрал, и сохранить его в поле из 4 символов». Я думал, что с текстовым кодированием нужно разобраться в конце, например, с функцией печати. Что мне просто нужно указать кодировку для использования компилятором, поскольку Windows не использует ASCII в приложениях win32, я думаю, компилятор C должен преобразовать введенный мной символ в ASCII из любого типа, который Windows отправляет в редактор C.
И последнее, что, если я хочу использовать, например, 25-байтовое целое число для некоторых сложных математических операций? C не имеет типа данных «укажи сам». Да, я знаю, что это будет сложно, так как нужно будет изменить все математические операции, потому что ЦП не может сложить 25-байтовые числа вместе. Но есть ли способ сделать это? Или есть какая-то математическая библиотека для этого? Что если я хочу вычислить число Пи до 1000000000000000 цифр? :)
Я знаю, что мой вопрос довольно длинный, но я просто хотел объяснить свои мысли как можно лучше на английском, так как это не мой родной язык, это сложно. И я считаю, что есть простой ответ на мой вопрос (вопросы), что-то, что я пропустил, что объясняет все. Я много читал о текстовом кодировании, учебниках по C, но ничего о нем. Спасибо за ваше время.