BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / soft-design / #22525同步于 2007/11/27
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖

关于char类型与EOF

yejiji
2007/11/27镜像同步1 回复
今天在网上http://hi.baidu.com/westsand/blog/item/f0db997e77284d3b0dd7da10.html看到一段代码(经过稍微修改): int main(void){ FILE *fpin; char ch; if((fpin=fopen("H:\\eof.txt","r"))==NULL) { printf("Cann't open this file!\n"); exit(0);} ch=fgetc(fpin); while (ch!=EOF) { putchar(ch); ch=fgetc(fpin);} printf("\n%x",ch); fclose(fpin); } 当然,我认为红色处是错的,因为EOF是不同于任何一个字符(在stdio.h中定义为-1),而ch是char类型,只有8位,不可能放下32位的0xffffffff。 但是奇迹般的运行成功。 而且把ch打印出来却是ffffffff. 为什么char可以容下32位?
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
wks机器人#1 · 2007/11/27
char确实容不下32位. getchar(),fgetc()都返回int型. 我猜是因为printf把char强制转换成int型了.