gnu*_*nud 15
EOF总是如此== EOF.不要假设其他任何事情.
在标准的二读(并且根据此处的一些其他评论),似乎EOF总是负的 - 并且对于在该问题中指定的用途(行号或EOF),它将起作用.我打算警告(现在仍然如此)假设字符为正,EOF为负.
请记住,标准符合C的实现可能具有负字符值 - 甚至在'C编程语言'(K&R)中也提到过.打印字符总是正面的,但在某些体系结构(可能是所有古代)上,控制字符都是负面的.C标准没有指定char类型是有符号还是无符号,并且唯一保证在平台上具有相同值的字符常量是'\0'.
pmg*_*pmg 10
是的,EOF总是消极的.
标准说:
7.19输入/输出
7.19.1简介3宏是EOF,扩展为整数常量表达式,类型为int和负值,由几个函数返回以指示文件结束,即不再有来自流的输入;
请注意,char签署"plain"没有问题.<stdio.h>处理chars 的函数,特别是将字符转换为unsigned char然后转换为int,以便所有有效字符都具有正值.例如:
int fgetc(FILE *stream)
Run Code Online (Sandbox Code Playgroud)
7.19.7.1
... fgetc函数将该字符作为转换为int的unsigned char获取...