| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 866 人关注过本帖
标题:看不懂,求高手!!!!
只看楼主 加入收藏
小跳蚤
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:437
专家分:1623
注 册:2011-4-9
结帖率:89.66%
收藏
已结贴  问题点数:20 回复次数:14 
看不懂,求高手!!!!
看到这样两句话 int ch;while((ch=getchar())!=EOF)为什么要定义ch为int型呢?
2011-05-13 10:41
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
getchar()遇到结尾或错误, 是会返回一个int型的值的。

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-05-13 10:45
诸葛修勤
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:11
帖 子:549
专家分:1955
注 册:2010-10-28
收藏
得分:0 
getchar() 返回的就是int类型
2011-05-13 11:00
top_dada
Rank: 2
等 级:论坛游民
帖 子:35
专家分:26
注 册:2011-4-20
收藏
得分:0 
嗯 嗯 。。
2011-05-13 11:07
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
getchar()在没有遇到错误或者EOF的时候, 返回给调用者一个字符。否则,返回调用者一个int值

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-05-13 11:45
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:20 
楼主可能很纳闷:getchar函数返回的是一个字符,应该将ch定义为char类型的数据,而不应该定义为一个int类型的数据!

为什么要将ch定义为一个int类型的数据呢??

对于不同的编译器来说,char类型的数据到底是和signed char一样还是和unsigned char一样是不同的。
有的编译器char类型的数据和signed char类型的数据一样,而有的编译器则和unsigned char类型的数据一样。那么这个又有什么问题呢?当然有问题了,并且有很大的问题了。EOF是一个宏定义,#define EOF -1。如果说char类型的数据和signed char类型的数据一样的,那么当getchar函数返回-1的话,ch就可以等于-1,因为此时的char是一个signed char,表示一个有符号的数;而如果char类型的数据和unsigned char类型的数据时一样的话,那么当getchar返回-1的话,ch = -1,但是此时的ch是不能够表示一个有符号的数,只能够表示无符号的数,-1就要转换为一个无符号的数,
从而ch = 255,这样ch永远也不能够等于-1了,因此while循环就会永远执行下去即一个死循环。


所以为了防止出现这样的情况,就将ch定义为int类型!

愿用余生致力编程
2011-05-13 19:53
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
楼上将的经典

                                         
===========深入<----------------->浅出============
2011-05-13 20:11
键盘农夫
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:88
专家分:106
注 册:2011-5-5
收藏
得分:0 
以下是引用ansic在2011-5-13 11:45:19的发言:

getchar()在没有遇到错误或者EOF的时候, 返回给调用者一个字符。否则,返回调用者一个int值
没有返回字符的情况
返回的都是int值

《狂人C:程序员入门必备》
2011-05-13 21:24
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
哦, 看了先书,返回的是int型。
int getchar (void)


[ 本帖最后由 ansic 于 2011-5-13 23:03 编辑 ]

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-05-13 23:01
其实、不想说
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:122
专家分:156
注 册:2011-3-3
收藏
得分:0 
2011-05-13 23:17
快速回复:看不懂,求高手!!!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017527 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved