getchar返回值类型、EOF、if语句

来源:互联网 发布:网页在线客服源码 编辑:程序博客网 时间:2024/06/08 19:17
C语言中getchar()的返回值类型为什么是int?
正常情况,getchar返回单个字符。但如果getchar()碰到文件结束标志或发生读错误,他必须返回一个EOF。为了区别于正常的字符,只好将EOF定义为负数(-1),因此getchar就设置成了int型。

EOF是个什么鬼?
为了区分文件中有效数据的输入结束符问题,在没有输入时,getchar函数返回一个特殊值,这个特殊值与任何实际字符都不同,即EOF(end of file)。将getchar()函数赋值变量声明为int是为了让其足够大,除了能存储任何可能的字符外还要能存储EOF。
 >>我不明白为什么我输入jflksdjf在加crtl+z后循环不退出!
这是因为getchar在对stdin不刷新的前提下,只会提示一次输入
如当程序运行后输入“jflksdjf”+“^z”,再键入回车,程序会显示
“jflksdjf->”,这里字符“->”就是“^z”,当检索到c=10(回车时)
再提示输入
此时再键入“^z”就直接跳出循环了
这个问题和编译器无关,只不过是getchar输出的一个特点! 
getchar是行缓冲的,输入a再输入ctrl+z之后输入的回车表示刷新缓冲,然后程序开始读入输入的数据,第一个看到a,然后就看到所谓的EOF了,后面就不会再看了
所以只有一行
if
else if属于同一语句
int a,b,c,d;
a = 9;
b = 5;
d = 2;
if(a>b);
c = 4;
else if(c > d)
printf("if判定了");
此程序编译器报警告变量c未初始化


0 0
原创粉丝点击