如何初始化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.