В glibc reference мы находим такие слова:Почему тестирование для знака int называется «неаккуратным кодом» в ссылке glibc?
... небрежный код, как
{ int c; ... while ((c = getc (fp)) < 0) ... }
должен быть переписано ...
Почему тестирование для знака ИНТ называется «неаккуратным кодом» в ссылке glibc?
Это уже объяснено чуть ниже (ваша цитата), т. Е. WEOF не обязательно должен быть нагативным. – usr
Просто внимательно прочитайте текст вокруг этого кода. Речь идет не о проверке знака. Речь идет о сравнении результата с «WEOF/EOF» явно. «EOF» должен быть отрицательным, и это единственное отрицательное значение, которое 'getc()' может возвращать. Так что популярная дурная привычка писать 'getc() <0' вместо' getc()! = EOF'. И эта привычка может быть интерполирована на 'wgetc()', но поскольку 'WEOF' не должен быть отрицательным, код типа wgetc() <0' может работать не так, как ожидалось. – Sergio
@Sergio: это замечание о 'WEOF' и' EOF' строго верно, но было бы намеренно ввести в заблуждение, чтобы определенный «WEOF' сделал что-то отличное от« EOF »и что любой из них отличается от« -1 ». – chqrlie