我看到glibc引用和C90修正案1之间的矛盾。
glibc引用的引用说wchar_t可能被提升为wint_t:
如果wchar_t定义为char,则由于参数提升,类型wint_t必须定义为int
但AMD1说:
目前,现有的实现可能有wchar_t为int和wint_t long,默认促销不会将int更改为long。 基本上,这是应该的 to wchar_t和wint_t是typedef。因此,我们现在不会有wchar_t 晋升为wint_t。
有人知道哪一个是正确的吗?
标准是否保证在以下两个程序中转换为unsigned int和int是正确的? (我刚刚将wint_t
和wchar_t
替换为glibc中的实际含义)
(我刚刚将wint_t
和wchar_t
替换为glibc中的实际含义)
#include <locale.h>
#include <wchar.h>
int main(void)
{
setlocale(LC_CTYPE, "en_US.UTF-8");
unsigned int wc;
wc = getwchar();
putwchar((int) wc);
}
-
#include <locale.h>
#include <wchar.h>
#include <wctype.h>
int main(void)
{
setlocale(LC_CTYPE, "en_US.UTF-8");
int wc;
wc = L'ÿ';
if (iswlower((unsigned int) wc)) return 0;
return 1;
}