Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
wchar可以被提升为wint吗?_C_Standards_Wchar T_Widechar_C Standard Library - Fatal编程技术网

wchar可以被提升为wint吗?

wchar可以被提升为wint吗?,c,standards,wchar-t,widechar,c-standard-library,C,Standards,Wchar T,Widechar,C Standard Library,我发现glibc参考和C90修正案1之间存在矛盾 glibc参考文献中的引文说,wchar\u t可能会被提升为wint\t: 如果wchar\u t定义为char,则由于参数提升,类型wint\u t必须定义为int 但AMD1说: 目前,现有的实现可能有wchar\u t为int和wint\u t为int long,默认促销不会将int更改为long。 基本上,这是应该的 要在typedefs中输入和输入。因此,我们现在不会有wchar\u t 晋升为温特 有人知道哪一个是正确的吗 标准是否

我发现glibc参考和C90修正案1之间存在矛盾

glibc参考文献中的引文说,wchar\u t可能会被提升为wint\t:

如果wchar\u t定义为char,则由于参数提升,类型wint\u t必须定义为int

但AMD1说:

目前,现有的实现可能有wchar\u t为int和wint\u t为int long,默认促销不会将int更改为long。 基本上,这是应该的 要在typedefs中输入和输入。因此,我们现在不会有wchar\u t 晋升为温特

有人知道哪一个是正确的吗

标准是否规定在以下两个程序中强制转换为unsigned int和to int是正确的?(我刚刚将
wint
wchar\u t
替换为它们在glibc中的实际含义) (我刚刚将
wint
wchar\u t
替换为它们在glibc中的实际含义)

#包括
#包括
内部主(空)
{
setlocale(LC_CTYPE,“en_US.UTF-8”);
无符号整数;
wc=getwchar();
putwchar((int)wc);
}
--

#包括
#包括
#包括
内部主(空)
{
setlocale(LC_CTYPE,“en_US.UTF-8”);
int wc;
wc=L‘ÿ’;
if(iswlower((unsigned int)wc))返回0;
返回1;
}

第一个单词是“如果”,因此这只适用于这种情况。当然不一定是这样。@KamiKaze,但如果这些陈述至少在一个案例上有矛盾,这就是一个问题。注意我在过去几年里一直在给你打的东西。。。。N天,其中N令人沮丧地接近一周。我之前提供了标准的引用。我要去睡觉了;我现在不想找到x参考文献,但它们是对你最后M个问题(或者,至少是你最后M个问题,我觉得有义务向你解释世界的方式)的回答和/或评论(或者很可能两者都是)。你知道
L'ÿ
的类型不一定是
wchar\t
,但是对应于
wchar\u t
的无符号类型。对于所有UTF-8语言环境,其值为255,类型为无符号。标准不要求在此强制转换。实现可能会警告您100%符合法律标准的代码,如果它愿意,这是一个单独的问题。无论如何,就标准而言,您对
wint\t
wchar\u t
的替换是无法解释的。如果您想谈论标准,请使用
wint\u t
wchar\u t
#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;
}