fgetc, проверка EOF
В книгеLinux System Programming Я читал примерно так:
fgetc
returns the character read as an unsigned char
cast to an int
or
EOF
on end of file or error. A common error using fgetc
is:
char c;
if ((c = fgetc()) != EOF) {...}
The right version of this code is:
int c;
if ((c = fgetc()) != EOF) { printf("%c", (char)c); ... }
Итак, почему я не могу привести возвращаемое значение кchar
перед сравнением сEOF
? Почему я должен сравниватьEOF
именно сint
? КакEOF
определяется как-1
обычно не приводится кchar
?
Есть ли платформы / компиляторы, где это не так?