EOF
(as defined in the C language) is not a character/not an ASCII value. That’s why getc
returns an int
and not an unsigned char
– because the character read could have any value in the range of unsigned char
, and the return value of getc
also needs to be able to represent the non-character value EOF
(which is necessarily negative).