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

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

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

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

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

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

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

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

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

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