Почему путчар, таппер, толуер и т. Д. Принимают вместо целого числа int?

В C строки - это массивы char (char *) и символы обычно хранятся вchar, Я заметил, что некоторые функции из libC принимают в качестве аргумента целые числа вместо символа.

Например, давайте возьмем функцииtoupper() а такжеtolower() что оба используютint, Страница руководства говорит:

Если c не является значением без знака или EOF, поведение этих функций не определено.

Я думаю, что сint, toupper а такжеtolower умеют иметь дело сunsigned char а такжеEOF, Но на самом делеEOF на практике (есть ли какое-либо правило относительно его значения?) значение, которое может быть сохранено сcharи так как эти функции не преобразуютсяEOF в другое, мне интересно, почемуtoupper не просто принимает символ в качестве аргумента.

В любом случае, почему мы должны принимать что-то, что не является символом (например, EOF)? Может ли кто-нибудь предоставить мне соответствующий вариант использования?

Это похоже наfputc или жеputchar, что также взятьint это превращается вunsigned char так или иначе.

Я ищу точные мотивы для этого выбора. Я хочу быть убежденным, я не хочу отвечать, что я не знаю, если кто-то спросит меня однажды.

Ответы на вопрос(3)

Ваш ответ на вопрос