число преобразуется в соответствующий символ?
https://stackoverflow.com/questions/35356322/difference-between-int-and-char-in-getchar-fgetc-and-putchar-fputc
мне кажется, там какую-то теорию подводят под тот факт, что сишные функции вообще не возвращают char, это слишком маленький тип :)
Они говорят лишь о том, что EOF (-1) может при использовании char просто совпасть с одним из символов.
разумеется, у меня исключительно претензия к попыткам объяснять возврат int-а в этом месте расширенными значениями, там примерно наоборот логика - все равно будем инт возвращать, давайте и EOF вернем
В книге Кернигана тоже объяснение о том, что нужно писать int, потому что EOF не вмещается в char
В итоге это правильное объяснение
А какое-нибудь объяснение, почему аргумент memset это int, а не char, он приводит?
Просто у меня сложилось ложное впечатление, из-за того, что при использовании char, у меня все работало так же.
Просто ты не использовал при вводе символ, который кодируется тоже как -1
буква 'я' в win1251 емнип даст EOF
Вроде бы нет, вообще я не знаю, что такое memset))
Думаю, дело в машинном слове, int выбирают как правило равным машинному слову.
Там только первым делом будет преобразование в unsigned char :) В общем, там через всё API проходит "мы не хотим char в сигнатурах функций"
Это просто боксинг, они с Лиспа слизали... 😂
Нет, не работало. Ты не учитывал обработку ошибок
Нет, потому что она будет преобразована в int
там код 255, как раз простейший контрпример к чтению в char
хм... а что такое код 26 ASCII?
Это СИМВОЛ конца файла, никак не связанный с EOF!
Символ EOF, никак не связанный с EOF, я так и понял :)
Eof это состояние, а не символ
Обсуждают сегодня