signed char c=0x0000ff;
としても
printf("c = %x",c);
とすると結果には"c = ffffff"と表示されます
cをunsigned charで定義すればちゃんと"c = ff"となるのですが、どういう違いがあるんでしょうか?