返回整数的getchar函数
来源:互联网 发布:ios助手for mac 编辑:程序博客网 时间:2024/05/01 21:49
来自:C缺陷与陷阱5.1节
我们首先看下面的这个例子:
#include <stdio.h>
int main()
{
char c; /* 改成:int c就正确了 */
while( ( c = getchar() ) != EOF )
{
putchar( c );
}
return 0;
}
getchar函数在一般情况下返回的是标准输入文件中的下一个字符,当没有输入时返回EOF(一个在头文件stdio.h中被定义的值,不同于任何一个字符)。这个程序乍一看似乎把标准输入复制到标准输出,实则不然。
原因在于程序中的变量c被声明为char类型,而不是int类型。这意味着c无法容下所有可能的字符,特别是,可能无法容下EOF。因此,最终结果存在以下几种可能:
1、某些合法的输入在被截断后,使得c的取值和EOF相同;这时程序将在文件复制的中途终止;
2、c根本不可能取到EOF这个值;这时程序陷入死循环;
3、程序表面上似乎能够正常工作,但完全是因为巧合。尽管函数getchar的返回结果在赋值给char类型的变量c时会发生“截断”操作,尽管while语句中比较运算的操作数不是函数getchar的返回值,然而令人惊讶地是许多编译器对上述表达式的实现并不正确。这些编译器确实对函数getchar的返回值做了截断处理,并把低端直接部分赋给了变量c。但是,它们在比较表达式中并不是比较c与EOF,而是比较getchar函数的返回值与EOF,编译器如果采取这种做法,上面的例子程序看上去就能够“正常”运行了。
0 0
- 返回整数的getchar函数
- 返回整数的getchar函数
- getchar()函数返回值的问题
- 话说getchar()等函数的返回值
- 用getchar()函数输出读取的一行的整数
- 练习1getchar函数读入一个整数
- 只用getchar函数读入一个整数
- getchar()的返回值类型
- getchar的返回值问题
- getchar的返回值问题
- getchar的返回值问题
- getchar()函数的作用
- getchar()函数的理解
- getchar()函数的作用
- getchar函数的用法
- getchar()函数的返回值以及单个字符输出函数putchar
- 只用getchar函数读入一个整数,存到int类型的数中
- 注意getchar()的返回值啊
- 搭建高可用mongodb集群(一)——配置mongodb
- 第十二周程序设计课解题报告
- 网络素养公开课笔记(二)
- iOS 开发之网络——总结
- hdoj 2063 过山车(二分图匹配之匈牙利算法)
- 返回整数的getchar函数
- Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'content' a
- Android短信的发送和广播接收者实现短信的监听
- Eclipse不编译解决办法
- Android调试与测试
- java synchronized详解
- 深入研究 Java Synchronize 和 Lock 的区别与用法
- 第十四周程序设计课解题报告
- MFC数据库操作 - 触发器