标准是否要求EOF为负值?
问题描述:
它是否写在EOF
必须为负的标准? 相反,WEOF
不要求为负数。为什么? 为wchar_t
情况不能在不同的普通char
(除非自动升级从char
到int
中扮演的角色)的任何方式,因为定义wchar_t
作为char
与标准完全正常。因此,类似的规则必须适用。标准是否要求EOF为负值?
从glibc的参考一些语录:
如果
wchar_t
是wint_t
必须定义为int
类型定义为char
由于参数推广。
这将是合法的定义
wchar_t
为char
答
是的,它是保证为负。见C11
7.21输入/输出
7.21.1介绍
1所述的报头定义了几个宏,并声明三种类型和许多 功能,用于执行输入和输出。
3 ...
EOF
它将扩展为一个整数常量表达式与
int
类型和负值
是什么** **理此?为什么WEOF不需要为负数? –
@IgorLiferenko:没有理由; 1989年以来,历史上预期和标准如此表述。当然,它使得'EOF'的符号不同于'getchar()'和朋友返回的有效字符值。 –
@JonathanLeffler不要再说历史了。你这些人是愚蠢的吗?我试图理解真正的原因。 –