Большинство вероятно (по моему мнению, поскольку большая часть обоснования раннего C теряется в недрах времени), это было просто для отражения типов, используемых в функциях типа fgetc
, которые должен иметь возможность вернуть любой действительный символ плюс специальный символ EOF
. Функция fgetc
возвращает следующий символ, преобразованный в int
, и использует специальное значение маркера EOF
для указания конца потока.
Для этого им нужен был более широкий тип int
, поскольку char
недостаточно большой, чтобы вместить все возможные символы плюс еще одну вещь.
И, поскольку разработчики C, похоже, предпочитают довольно минималистский подход к коду, имеет смысл, что они будут использовать один и тот же тип, чтобы учесть такой код, как:
filecopy(ifp, ofp)
FILE *ifp;
FILE *ofp;
{
int c;
while ((c = fgetc (ifp)) != EOF)
fputc (c, ofp);
}