Wenn ich eine Variable von char deklariere, hat sie noch nichts mit ASCII zu tun:
Grundlagen C:

char 1 Byte min -128 max 127
unsigned char 1 Byte min 0 max 255
bei 32 Bit Prozesoren:
int 4 Bytes -2147483648 max 2147483647
unsigned int 4 Bytes min 0 max 4294967295

int ist wiederrum Prozessorabhängig sehe z.B inttypes.h
Hiermit ist wohl klar, wenn ich eine Zahl darstellen will, die maximal den Wert 255 annehmen kann nehm ich unsigned char und nicht int, das wäre Speicherverschwendung!

Gruß Sebastian

P.S.
Es gibt kein GNU gcc...
was meint Ihr für was dieses g steht ?