*可能* unsigned char等于EOF?

参见英文答案 > 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的重复.我在第一次搜索时没有找到这个问题.谢谢你的帮助!

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...