#include <stdio.h>

void main( )
{
signed char a;
unsigned char b;

a = 0xFF;
b = 0xFF;

printf( "a = %X\n", a );
printf( "b = %X\n", b );
}

結果
a = FFFFFFFF
b = FF

どうして結果が違いますか?