【发布时间】:2017-04-07 03:44:24
【问题描述】:
标准是否表明在以下两个程序中转换为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 是保留的代码点,但是
碰撞还是不对的。
我不想发誓这在现实生活中永远不会发生 对现有实施的详尽审计。
【问题讨论】:
-
没有提到wint_t的标准。
标签: c standards wchar-t widechar c-standard-library