如何初始化wchar_t变量?

我正在读这本书: C:在一个坚果壳中 ,在阅读了关于宽字符的字符集部分后,我写了这个程序:

#include  #include  #include  int main() { wchar_t wc = '\x3b1'; wprintf(L"%lc\n", wc); return 0; } 

然后我用gcc编译它,但是gcc给了我这个警告:

main.c:7:15:警告:hex转义序列超出范围[默认启用]

并且程序不输出字符α(其unicode为U + 03B1),这是我想要它做的。

如何更改程序以打印字符α?

这对我有用

 #include  #include  #include  #include  int main(void) { wchar_t wc = L'\x3b1'; setlocale(LC_ALL, "en_US.UTF-8"); wprintf(L"%lc\n", wc); return 0; } 
 wchar_t wc = L'\x3b1'; 

是将wchar_t变量初始化为U + 03B1的正确方法。 L前缀用于指定wchar_t文字。 您的代码定义了char文字,这就是编译器警告的原因。

打印时看不到所需字符的事实是由本地环境的控制台设置决定的。

试试L'\x03B1'它可能只是解决你的问题。 如果您有疑问,可以尝试:

 '\u03b1' to initialize.