| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2276 人关注过本帖
标题:char a=EOF;//a被赋值什么了?
只看楼主 加入收藏
msl12
Rank: 1
等 级:新手上路
帖 子:152
专家分:0
注 册:2015-2-6
结帖率:25%
收藏
 问题点数:0 回复次数:8 
char a=EOF;//a被赋值什么了?
求解。
2015-05-28 15:57
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
1、你可以自己打印出来看看结果。

2、EOF的定义在stdio.h中可以打开看看。不要告诉我你不知道stdio.h文件在哪里。

重剑无锋,大巧不工
2015-05-28 16:10
msl12
Rank: 1
等 级:新手上路
帖 子:152
专家分:0
注 册:2015-2-6
收藏
得分:0 
回复 2楼 beyondyf
还真不知道'stdio'文件在哪儿。。
不过调试可以看到被赋值ASCII值为‘-1’的东东,表示什么?
2015-05-29 16:44
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
a被赋值为所有位全为1的char数据类型那么大的一个数。

授人以渔,不授人以鱼。
2015-05-29 16:50
漠漠残香
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2015-5-3
收藏
得分:0 
EOF 值就是‘-1’
2015-05-29 19:57
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
如果楼主得到了-1的值,他就不必问这个问题。

授人以渔,不授人以鱼。
2015-05-29 20:26
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
平时不看书,我给你抄点书,总不会看不到吧?

与其他类型不同,字符型被分为了三种:char、signed char和unsigned char。特别需要注意的是:类型char和类型signed char并不一样。尽管字符型有三种,但是字符的表现形式却只有两种:带符号的和无符号的。类型char实际上会表现为上述两种形式中的一种,具体是哪种由编译器决定


描红的文字,即为楼主问题的答案。别想当然那是-1。顺便说一句:虽然EOF宏在大多数编译器中被定义为-1,但却不是必然的。宏的作用,就是叫你不要关注具体值,但偏偏很多人要颠覆宏的目的去追问具体值,那就不必设计宏这个机制了。

这段文字,在《C++ Primer》第五版的第31-32页,最基础的东西。看书看到后头,连前面的基本概念都不知道或忘了,若经我现在这么特意说一帖,还没有醒悟和警觉的话,那就什么都不用学了——所有学问都是这般,最重要的东西在前头,不在后头。总问如何提高,不如先问一问自己,这种基本知识点为什么全然忘却?抑或是根本不重视?

[ 本帖最后由 TonyDeng 于 2015-5-29 21:09 编辑 ]

授人以渔,不授人以鱼。
2015-05-29 21:02
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
实际上大多数的编译器实现中,char是unsigned char,是无符号的,EOF的值尽管是-1,到了unsigned char值域,就不会再呈现为-1,但printf()輸出的结果,却是被%d或%u左右的,那已经不能回答a到底是什么值的问题了。getchar()函数的返回值为什么是int而不是char?这在很多人推荐的《C缺陷与陷阱》一书中的经典话题,相信很多人都看过,也会讲,但到了这个问题,就会出错。那意味着什么?

授人以渔,不授人以鱼。
2015-05-29 21:20
msl12
Rank: 1
等 级:新手上路
帖 子:152
专家分:0
注 册:2015-2-6
收藏
得分:0 
回复 8楼 TonyDeng
教训得好
2015-05-30 20:54
快速回复:char a=EOF;//a被赋值什么了?
数据加载中...
 
   



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

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