char vs wchar_t

Estou tentando imprimir uma string wchar_t *. O código está abaixo:

#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_: 中日友好

Questão

Aparentemente, não devo atribuir caracteres CJK ao ponteiro char * na linha 1, mas acabei de fazê-lo, e a saída da linha 3 está correta. Então, por que? Como printf () na linha 3 me deu os caracteres não-ascii? Ele conhece a codificação de alguma forma?

Presumo que o código da linha 2 e da linha 4 esteja correto, mas por que não recebi nenhuma saída da linha

questionAnswers(3)

yourAnswerToTheQuestion