标准是否说在以下两个程序中的转换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
is signed short
(这个假设的实现仅限于 BMP)、wint_t
issigned int
和的情况WEOF == ((wint_t)-1)
。则(wint_t)U+FFFF
与 无异WEOF
。是的,U+FFFF
是一个保留的代码点,但它碰撞仍然是错误的。
如果没有对现有实现进行详尽的审计,我不想发誓这在现实生活中永远不会发生。