可以将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_twchar_t替换为它们在glibc中的实际含义)(我只是将wint_twchar_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; }