Duda de un novatillo

n0nick
09 de Septiembre del 2003
Hola a todos, estoy empezando en C y tengo esta duda, sera una tonteria pero no me aclaro.

char cadena[15];
int a = 100;
int b = 50;
printf ("Introduzca cadena : n");
gets(cadena); // yo introduzco a por ejemplo a
cadena[0] = (unsigned int)cadena[0] + a + b;
Es decir, si sumo 97 + 100 + 50 daria 147, no?
Entonces porque cadena[0] me sale que es igual a -9?
Gracias.

Oliverio
09 de Septiembre del 2003
En VC++ e tipo char es igual a signed char (-128 a 127) por eso tenes un valor negativo.
unsigned char cadena[15];
unsigned int a = 100;
unsigned int b = 50;
printf ("Introduzca cadena : n");
gets((char*)cadena);
cadena[0] = a + b + cadena[0];

asi cadena[0] sera igual a 247