char kommt von Charakter, und Charakter bedeutet übersetzt "Zeichen".
Ein Zeichen ist ein Zeichen, und kennt kein Vorzeichen. Für Zahlenwerte
gibt es die Datentypen signed char und unsigned char, oder besser mit
den Typen aus <stdint.h> int8_t und uint8_t. Damit klappt das dann auch
mit negativen Zahlen.
Oliver
P.S. C betrachtet char zwar auch als Zahl, aber ob das jetzt eine Zahl
mit oder ohne Vorzeichen it, ist im Sparchstandard nicht definiert. Dein
Compiler ist halt so eingestellt, daß er chars' als unsigned
interpretiert.