Porque es posible realizar esta operacion en C?

Iniciado por palacio29, 20 Febrero 2017, 00:49 AM

0 Miembros y 1 Visitante están viendo este tema.

palacio29

Tengo el siguiente codigo

#include <stdio.h>
#include <stdlib.h>

int main()
{

char d='7';


printf("%d%d",(((d-'0')*2)/10),(((d-'0')*2)%10));

    return 0;
}



Lo que no entiendo es porque es posible realizar operaciones matematicas si es que el 7 ingresado no es un numero, si no que es el caracter 7 y esta ingresado como char...Creo que me falta algo de concepto para entenderlo.

engel lex

porque a nivel de codigo un char es un sistema de 8 bits que se representa como letra visualmente... pero al ser binario puede ser usado como numero, solo que '7' no representará el numero 7 sino la posición de el simbolo '7' en la tabla ascii que sería 55
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

palacio29

Y si cambio el '7' y pongo una 'a'...porque el resultado da 98?

#include <stdio.h>
#include <stdlib.h>

int main()
{

char d='a';


printf("%d%d",(((d-'0')*2)/10),(((d-'0')*2)%10));

    return 0;
}

engel lex

es más facil que simplifiques el codigo y dejes


printf("%d",d);


y compares con una tabla ascii

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

palacio29

Cita de: engel lex en 20 Febrero 2017, 01:12 AM
es más facil que simplifiques el codigo y dejes


printf("%d",d);


y compares con una tabla ascii




Hola, gracias ya lo entendi!!...estaba confundido porque pense que los numeros empezaban en el 0 en la ascii,...pero empiezan en el 48. :silbar:..y como igualmente el resultado del ejercicio que estaba haciendo me estaba dando bien en ese caso  me estaba confundiendo.