2016-11-23 81 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不要再說歷史了。你這些人是愚蠢的嗎?我試圖理解真正的原因。 –