int型变量的高位是填充0的(为什么填充0,跟汇编语言里面的符号扩展类似,在后面会提到),因此返回的结果是0X00 00 00 FA,始终不会是负数.而若读取到文件末尾的时候,即没有数据可供读取的时候,那么返回EOF,即-1,这个-1是一个int型常量,二进制表示是0x FF FF FF FF。
C语言中,stdio.h标准库中的EOF(文件结束标志)为什么采用括号将-1括起来?这是因为防止潜在的宏替换错误、提高可读性、保证表达式结果的正确性。特别是,将-1用括号括起来可以有效地防止宏替换时发生的优先级错误。当EOF在复杂表达式中使用时,没有括号可能会产生非预期的结果,因为宏只是简单的文本替换,不会考虑运算符...
但是,后来我发现,EOF不是特殊字符,而是一个定义在头文件stdio.h的常量,一般等于-1。 #define EOF (-1) 于是,我就困惑了。 如果EOF是一个特殊字符,那么假定每个文本文件的结尾都有一个EOF(也就是-1),还是可以做到的,因为文本对应的ASCII码都是正值,不可能有负值。但是,二进制文件怎么办呢?怎么处理文件内部包...
一般EOF的值为-1,ASCII代码值的范围是0~255,不可能出现-1,因此可以用EOF作为文件结束标志。EOF在windows对应的按键是CTRL+Z键,在linux系统上对应的按键是CTRL+D。比如下面的代码:include <stdio.h>int main(){int c;while ((c = getchar()) != EOF)putchar(c);return 0;} 运行程序...
)!=EOF) 这玩意啥意思呢?首先scanf你写while里就很奇怪了,初学者表示没见过这么嵌套写的,再 ...
EOF是End Of File的意思,在C语言中定义的一个宏,用作文件结束标志。从数值角度看,就是-1。从一个终端的输入从来不会真的“结束”(除非设备被断开),但把从终端输入的数据分区成多个“文件”却很有用,因此一个关键的序列被保留下来来指明输入结束。在UNIX和AmigaDOS中,将击键翻译为EOF的过程...
C语言标准库中的EOF是宏常数,其定义是:#defineEOF(-1)程序中凡写EOF处,将用(-1)替代,替代后再编译。while((c=getchar())!=EOF)就是while((c=getchar())!=(-1))---当读语句(例如fscanf),读到文件尾时,就会获得EOF,EOF又叫文件结束符。读语句(例如getchar),遇到键盘输入ctrl+...
你同学的观点是正确的,scanf的返回值就是EOF,只不过EOF恰好被定义成了-1,但是这个EOF也不过是一个...
有啊,比如为了防止出现:a-(EOF)被翻译成a--1
EOF是end of file的缩写,表示"文字流"(stream)的结尾。这里的"文字流",可以是文件(file),也可以是标准输入(stdin)。EOF不是特殊字符,而是一个定义在头文件stdio.h的常量,一般等于-1。define EOF (-1)除了表示文件结尾,EOF还可以表示标准输入的结尾。但是,标准输入与文件不一样,无法事...