您的位置:首页 > 其它

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

2017-01-04 23:56 701 查看
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未初始化
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐