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