为什么用c语言EOF IS -1?

ven*_*kat 3 c

在c语言我使用EOF .....为什么EOF是-1?为什么不是其他价值?

Mar*_*ers 10

来自维基百科:

EOF的实际值取决于系统(但通常为-1,例如在glibc中),并且与任何有效的字符代码不相等.

它不能是0 - 255中的任何值,因为它们是大多数系统上字符的有效值.例如,如果EOF为0,那么您将无法区分读取0和到达文件末尾之间的区别.

-1是显而易见的剩余选择.

您可能还想考虑使用feof:

由于EOF用于报告文件结尾和随机错误,因此通常最好使用feof函数明确检查文件末尾和ferror以检查错误.

  • +1如果`CHAR_BIT`为8,则范围0--255适用; 但是,无论`CHAR_BIT`的值是什么,-1都不是有效值. (3认同)