我要尝试打印一个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字符分配给char*指针,但我却这样做了,而第三行的输出是正确的。为什么?printf()在第三行如何给我提供非ASCII字符?它是否知道编码方式?
我假设第二行和第四行的代码是正确的,但为什么我没有得到第四行的输出?