C is byte oriented. It will stores everything in bytes. printf will send a byte stream to standard output. It is up to terminal / output device to interpret bytes
any char will be converted to int whenever is used in printf or any other function with variable argument list (in C, not C++).
So it is safe to use %d or %x for char type, however it is recommended to use %hhd and %hhx