我使用的系统是centos5.5,编译器是gcc 2.5。
程序如下:
//程序作用:验证表达式getchar()!=EOF时的值是0还是1.
#include<stdio.h>
main()
{
int c;
while(c=getchar()!=EOF) //!=的优先级比=的优先级高,故表达式从右往左结合
printf("%d\n",c);
printf("%d - at EOF\n",c);
}
gcc编译后,生成a.out文件。
./a.out执行,我输入如下数据:
2回车
输出:
1
1
怎么会输出两个1?仔细想想,回车也是一个字符,所以实际是两次输入,故输出两个1。也说明当输入不等于EOF时,表达式getchar()!=EOF值是1。
接着输入:
回车
输出:
1
输入:-1回车
输出:
1
1
1
‘-’,1,‘回车’共3个字符,故输出3个1。
这时候我想怎么结束输入呢,我的系统下是 Ctrl键+D。
按下Ctrl键+D,即相当于输入EOF,输出为:
0 - at EOF
这说明输入等于EOF时,表达式getchar()!=EOF值是0。
因为EOF是定义在头文件<stdio.h>中,故可以在程序最后加入下行代码看EOF的值:
printf("%d\n",EOF);
输出结果是-1。
好了,每天进步一点点。