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。
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未初始化
正常情况,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输出的一个特点! |
所以只有一行
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未初始化
相关文章推荐
- vc++,MFC 中,用ado执行sql server语句时,并且对返回值真假判断的例子,即bool类型
- C语言中为什么不能用char类型来存储getchar()的返回值
- 006: 基本控制语句 if 与 bool 数据类型
- C#基础总结之一变量常量-if嵌套语句-witch结构-类型转换
- 【Go入门教程5】流程(if、goto、for、switch)和函数(多个返回值、变参、传值与传指针、defer、函数作为值/类型、Panic和Recover、main函数和init函数、import)
- 再学Java基础(2)标识符,变量,数据类型。以及 if与for语句
- bash中if条件语句的使用及bash返回值的注意事项
- [TwistedFate]bool类型,关系运算符,逻辑运算符,程序的三种结构,条件表达式,枚举类型,if,switch语句
- 黑马程序员——Java标识符+常量变量类型+运算符+if和swtich语句-第2天
- Matlab编程与数据类型 -- 分支条件选择语句if/end
- if 判断语句来判断浏览器的类型和版本
- C++学习笔记(第二章 数据类型 变量 表达式 if语句)
- bool类型变量与0比较的if语句应该怎样书写
- 返回值及IF语句
- iOS开发学习第二课——BOOL类型/if语句/switch语句
- C语言中为什么不能用char类型来存储getchar()的返回值
- getchar()函数的返回值赋给char型,用if(ch=getchar() != EOF)测试,输入ctrl+z同样可以结束循环的分析
- js数据类型以及"==","==="运算符、if()语句
- 数据类型和数据类型转换以及if语句的使用
- Matlab编程与数据类型 -- 多分支条件选择语句if/elseif/…/else/end