我正在尝试打印出 wchar_t* 字符串。代码如下:
#include <stdio.h>
#include <string.h>
#include <wchar.h>
char *ascii_ = "中日友好"; //line-1
wchar_t *wchar_ = L"中日友好"; //line-2
int main()
{
printf("ascii_: %s\n", ascii_); //line-3
wprintf(L"wchar_: %s\n", wchar_); //line-4
return 0;
}
//Output
ascii_: 中日友好
问题:
显然我不应该将 CJK 字符分配给第 1 行中的 char* 指针,但我只是这样做了,第 3 行的输出是正确的,那为什么呢?第 3 行中的 printf() 如何给我非 ascii 字符?它以某种方式知道编码吗?
我假设第 2 行和第 4 行中的代码是正确的,但为什么我没有得到第 4 行的任何输出?