2016-11-23 46 views
0

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

从glibc的参考一些语录:

如果wchar_twint_t必须定义为int类型定义为char由于参数推广。

这将是合法的定义wchar_tchar

回答

1

是的,它是保证为负。见C11

7.21输入/输出

7.21.1介绍

1所述的报头定义了几个宏,并声明三种类型和许多 功能,用于执行输入和输出。

3 ...

EOF

它将扩展为一个整数常量表达式与int类型和负值

+0

是什么** **理此?为什么WEOF不需要为负数? –

+1

@IgorLiferenko:没有理由; 1989年以来,历史上预期和标准如此表述。当然,它使得'EOF'的符号不同于'getchar()'和朋友返回的有效字符值。 –

+0

@JonathanLeffler不要再说历史了。你这些人是愚蠢的吗?我试图理解真正的原因。 –