Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: palacio29 en 20 Febrero 2017, 00:49 am



Título: Porque es posible realizar esta operacion en C?
Publicado por: palacio29 en 20 Febrero 2017, 00:49 am
Tengo el siguiente codigo

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6.  
  7. char d='7';
  8.  
  9.  
  10. printf("%d%d",(((d-'0')*2)/10),(((d-'0')*2)%10));
  11.  
  12.    return 0;
  13. }
  14.  


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.


Título: Re: Porque es posible realizar esta operacion en C?
Publicado por: engel lex en 20 Febrero 2017, 01:00 am
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


Título: Re: Porque es posible realizar esta operacion en C?
Publicado por: palacio29 en 20 Febrero 2017, 01:07 am
Y si cambio el '7' y pongo una 'a'...porque el resultado da 98?

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6.  
  7. char d='a';
  8.  
  9.  
  10. printf("%d%d",(((d-'0')*2)/10),(((d-'0')*2)%10));
  11.  
  12.    return 0;
  13. }
  14.  


Título: Re: Porque es posible realizar esta operacion en C?
Publicado por: engel lex en 20 Febrero 2017, 01:12 am
es más facil que simplifiques el codigo y dejes

Código
  1. printf("%d",d);

y compares con una tabla ascii

(http://www.webtutoriales.com/tutoriales/images/2/content_tabla_ascii.gif)


Título: Re: Porque es posible realizar esta operacion en C?
Publicado por: palacio29 en 20 Febrero 2017, 01:24 am
es más facil que simplifiques el codigo y dejes

Código
  1. printf("%d",d);

y compares con una tabla ascii

(http://www.webtutoriales.com/tutoriales/images/2/content_tabla_ascii.gif)


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.