Um unsigned char guarda inteiros de 0 a 255. Um signed char guarda inteiros de -128 a 127. O tipo char é sinônimo de unsigned char ou de signed char, dependendo do ambiente (compilador e computador) no qual o programa for executado. Em outras palavras, num compilador/computador o char pode guardar inteiros de 0 a 255 e em outro ele pode guardar inteiros de -128 a 127.
Para ter certeza que a sua variável guarda números no intervalo que você precisa, declare-a como
unsigned char c;
ou como
signed char c;
Fórum