标准是否表示在以下两个程序中铸造到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