加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

*可能* unsigned char等于EOF?

发布时间:2020-12-16 05:32:20 所属栏目:百科 来源:网络整理
导读:参见英文答案 Can sizeof(int) ever be 1 on a hosted implementation?8个 当使用fgetc来读取流的下一个字符时,通常会检查文件结尾是否达不到 if ((c = fgetc (stream)) != EOF) 其中c是int类型.然后,文件结束已经达到,条件将失败,或c将是转换为int的无符号
参见英文答案 > Can sizeof(int) ever be 1 on a hosted implementation?8个
当使用fgetc来读取流的下一个字符时,通常会检查文件结尾是否达不到
if ((c = fgetc (stream)) != EOF)

其中c是int类型.然后,文件结束已经达到,条件将失败,或c将是转换为int的无符号字符,预期与EOF不同,EOF确保为负数.很好…显然.

但是有一个小问题…通常char类型不超过8位,而int必须至少有16位,所以每个unsigned char都可以表示为int.然而,在这种情况下,char将会有16位或32位(我知道这在实践中永远不会这样),没有理由不能有sizeof(int)== 1,所以它将是(理论上)可能fgetc(stream)返回EOF(或另一个负值),但文件结尾尚未实现…

我错了吗C标准中是否存在阻止fgetc返回EOF的东西,如果文件结束还没有返回? (如果是,我找不到它!).或者是if((c = fgetc(stream))!= EOF)语法不完全可移植?

编辑:的确,这是问题#3860943的重复.我在第一次搜索时没有找到这个问题.谢谢你的帮助!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读