参见英文答案 >
Can sizeof(int) ever be 1 on a hosted implementation?8个
当使用fgetc来读取流的下一个字符时,通常会检查文件结尾是否达不到
当使用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的重复.我在第一次搜索时没有找到这个问题.谢谢你的帮助!