先看看这个核心
while( (c=getchar() ) != EOF)
考试里面出了一道有这个代码的题,让我很烦恼,不是刚学完循环,这样那样循环继续,不符合出去,怎么还有EOF(ctrl+z就是他,有个大写Z),很着急甚至怀疑自己,不是这样的.......
(慢慢来。)我们先看看课本《c语言程序设计》里面的两道题。
第一道题
验证表达式getchar()!=EOF的值是1还是0?(写代码尝试)
(提示 让c等于这个表达式,不等运算符!=的优先级高于赋值运算符=)
(看清楚是表达式)
#include<stdio.h>
int main()
{
int c;
while( c = getchar() != EOF )
printf("%d",c);
printf("%d",c);
return 0;
}
试着输入:
1 abc 回车
2 abc ctrl+z abc 回车
3 ctrl+z 回车
(注意:上面没有空格)
理解
1abc回车,1111,前三个1和最后一个1不一样,想一想。
2abc ctrl+z 回车, 遇到 ctrl+z(图片里面那个符号和大写Z),遇到ctrl+z 运行结束,后面的就没有打印。
3 ctrl+z 回车,EOF不等于EOF不符合条件,为假,循环结束,打印c,c为0
第二道题
编写一个打印EOF值的程序?
(woc,这是什么意思,printf("EOF",芜湖??)
#include<stdio.h>
int main()
{
printf("%d",EOF);
return 0;
}
芜湖,你对EOF有初步的理解,下一篇进阶一下。