I am reading the book: C: In a Nutshell, and after reading the section Character Sets, which talks about wide characters, I wrote this program:
<
wchar_t wc = L'\x3b1';
is the correct way to initialise a wchar_t variable to U+03B1. The L prefix is used to specify a wchar_t literal. Your code defines a char literal and that's why the compiler is warning.
The fact that you don't see the desired character when printing is down to your local environment's console settings.