標準是否表示在以下兩個程序中鑄造到wint_t
和wchar_t
保證是正確的?如何轉換爲`wint_t`和`wchar_t`?
#include <locale.h>
#include <wchar.h>
int main(void)
{
setlocale(LC_CTYPE, "");
wint_t wc;
wc = getwchar();
putwchar((wchar_t) wc);
}
-
#include <locale.h>
#include <wchar.h>
#include <wctype.h>
int main(void)
{
setlocale(LC_CTYPE, "");
wchar_t wc;
wc = L'ÿ';
if (iswlower((wint_t) wc)) return 0;
return 1;
}
考慮的情況下wchar_t
是signed short
(這 假想實施僅限於BMP),wint_t
是signed int
,並且WEOF == ((wint_t)-1)
。然後(wint_t)U+FFFF
是 與WEOF
沒有區別。是的,U+FFFF
是保留的編碼點,但是 它碰撞仍然是錯誤的。
我不想發誓,如果沒有 對現有實現進行詳盡審計,這種情況在現實生活中不會發生。
也May wchar_t be promoted to wint_t?
沒有提到wint_t的標準。 – gnasher729