不知道什么有关问题的有关问题

不知道什么问题的问题
#include<stdio.h>


 
void main(void)

{
char c=-5;


printf("%x\n",c);


}
输出0xfffffffb

问题:char类型只用到一个byte,于是-5的补码为0xfb,输出应该是0xfb啊?为什么输出是0xfffffffb(VC下),是说明char占了4byte吗?是因为内存对齐?

------解决方案--------------------
输出时被扩展为32位的了……
------解决方案--------------------
是因为printf( "%x\n", c );中的%x默认是按32位,即8个16进制符来打印的,想要打印出0xfb,可以使用printf( "%02x\n", c )