Visual Studio 2015 (Visual C++ 14)

char32_t unko = U'A';
printf("%04X", unko);

warning C4477: 'printf' : format string '%04X' requires an argument of type 'unsigned int',
but variadic argument 1 has type 'char32_t'

なんで?
(キャストしろ、というのは無しでおながいします)