如果没有#including wchar,前缀L"......"代表GCC C是什么?

Der*_*unk 1 c types

也就是说,为什么unsigned short var= L'ÿ'工作,但unsigned short var[]= L"ÿ";不是?

Chr*_*ung 11

L'ÿ'是类型wchar_t,可以隐式转换为unsigned short.L"ÿ"是类型wchar_t[2],不能隐式转换为unsigned short[2].


Ste*_*e M 5

L是宽字符文字和宽字符串文字的前缀。这是语言的一部分,而不是标题。它也不是特定于 GCC 的。它们会像这样使用:

wchar_t some_wchar = L'ÿ';
wchar_t *some_wstring = L"ÿ"; // or wchar_t some_wstring[] = L"ÿ";
Run Code Online (Sandbox Code Playgroud)

您可以这样做,unsigned short something = L'ÿ';因为定义了从 wchar_t 到 short 的转换。wchar_t* 和short 之间没有定义这种转换。