鱼C论坛

 找回密码
 立即注册
查看: 4069|回复: 7

EOF的问题

[复制链接]
发表于 2013-1-20 16:13:03 | 显示全部楼层 |阅读模式
4鱼币
我在看KR The C PROGRAMMING Language的时候,
int a;
(a=getchar)!=EOF;  简略写了下
书上说用int定义,不用char定义,是因为怕char型存储不下EOF。
我自己做一个实验得出EOF的值是65535,但是我用char型程序也能跑,而且在TC中int型只有两个字节,也存不下啊。
请教下怎么回事呢?
本人新手 ,  多多指教  谢谢

最佳答案

查看完整内容

EOF的值一般是-1,你可能算错了。 char的范围根据编译器的不同而不同,可能是无符号也可能是有符号的。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-1-20 16:13:04 | 显示全部楼层

EOF的值一般是-1,你可能算错了。
char的范围根据编译器的不同而不同,可能是无符号也可能是有符号的。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-1-20 17:04:28 | 显示全部楼层
LS说得没错。你的编译环境下,char正好等价于signed char
有的编译环境下,char等价于unsigned char;在这种环境下 就不可能取到-1
之所以有这种问题,本质上是由于C语言标准没有规定char到底有没有符号,所以各个C的编译器厂家都是自行决定这一点。

评分

参与人数 1鱼币 +3 收起 理由
1079629687 + 3 感谢!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-1-20 17:19:39 | 显示全部楼层

我用的事%u来做显示, 可能存在高位扩充?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-1-21 17:45:03 | 显示全部楼层
楼主可能没好好看书..EOF是常量值为1..
char 类型不会有负的..0 - 255..-
而 - 1是用来做一个文件结尾..
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-1-21 18:29:40 | 显示全部楼层
ωǒ啲丗界ò 发表于 2013-1-21 17:45
楼主可能没好好看书..EOF是常量值为1..
char 类型不会有负的..0 - 255..-
而 - 1是用来做一个文件结尾..

CHAR类型怎么没有负的     -128~127     你自己用char定义的数据去看看  超过127的话会不会数据错误   
那是要在定义unsigned char型才是255
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-1-22 04:55:22 | 显示全部楼层
表示压力很大……
书上说用int定义,不用char定义,是因为怕char型存储不下EOF。
//这句话可能lz理解有误,不是怕存储不下,而是最好不这么写的,即使存储不下,0XFFFF,也会截断为0XFF,还是-1.关键是上面几位哥们说的,看char的实现是signed or unsigned。能不能表示-1了。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-1-24 09:39:21 | 显示全部楼层
1079629687 发表于 2013-1-20 17:19
我用的事%u来做显示, 可能存在高位扩充?

%u是无符号输出,-1如果用%u输出正好是你那个结果。应该用%d。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-9 01:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表