该标准是否要求EOF为负数?

是否在标准中写明EOF必须是否定的? 相反, WEOF不需要是否定的。 为什么? wchar_t的情况不能与普通的char任何不同(除了从charint自动升级扮演角色的情况),因为将wchar_t定义为char对于标准是完全正常的。 因此,必须适用类似的规则。

来自glibc引用的一些引用:

如果将wchar_t定义为char则由于参数提升,必须将类型wint_t定义为int

wchar_t定义为char是合理的

是的,保证是负面的。 见C11

7.21输入/输出

7.21.1简介

1标题定义了几个宏,并声明了三种类型和许多用于执行输入和输出的函数。

3 ……

EOF

它扩展为整数常量表达式,类型为int ,负值