C/Visual C - ¿ efecto paranormal en C ?

 
Vista:

¿ efecto paranormal en C ?

Publicado por Squall (1 intervención) el 16/12/2001 16:19:40
Buenas
Me sucede una cosa muy extraña en una parte de codigo que he escrito, os pongo esa parte para que quede mas claro
--------------------------------------------

printf("Inserta la letra del numero: ");
verde2 scanf("%i", &numerodos);
blanco printf("Inserta el numero que deseas verificar: ");
verde2 scanf("%c\n", &LETRADOS);

if ( LETRADOS=='t' || LETRADOS=='T' )
{
printf("\n");
printf("La letra es la t\n");
}
else
{
printf("no es t\n");
}

-----------
bien, si os dais cuenta cuando me pide que inserte una letra, la variable del scanf es &numerodos, y cuando me pide que inserte un numero la varia es &letrados, despues la condicion la toma de letrados, y yo me pregunto como puede esto funcionar si yo en letrados he insertado un numero ¿ alguien sabe porque?

Un saludo a todos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:¿ efecto paranormal en C ?

Publicado por Esteban (2 intervenciones) el 16/12/2001 16:34:27
Cuando estas pidiendo una letra, a lo que se ingrese, supuestamente una letra, lo tratas como %i (entero). Y en cambio, cuando estas pidiendo un numero, lo tratas como %c (caracter). No estoy seguro, creo que un munero si lo puedes tratar como caracter, pero una letra no la puedes tratar como entero, ese debe ser el problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:¿ efecto paranormal en C ?

Publicado por Alexis Leung (70 intervenciones) el 17/12/2001 13:52:13
Bueno, lo que pasa es que cuando insertars un número en LETRADOS este lo convierte en el código ASCII, es decir, si insertas 97 entonces estarías insertando la letra 'a', dependiendo si lo tratas como entero o como un caracter. Tomemos como ejemplo la función getch(). Si la has utilizado entonces sabras que es para recibir un carácter sin imprimirlo en la pantalla, si examinas bien verás que getch() devuelve un entero, es decir el prototipo es:

int getch(void); El entero equivale al número del caracter. si presionas ´b´ entonces devolvería 98.

Prueba en el programa cuando te pide LETRADOS, e inserta el número 116 ó 84 y veras que la condición es verdadera, ya que 116 es ´t´y 84 es ´T´.

Espero que hayas entendido.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar