elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Porque es posible realizar esta operacion en C?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Porque es posible realizar esta operacion en C?  (Leído 1,043 veces)
palacio29

Desconectado Desconectado

Mensajes: 103


Ver Perfil
Porque es posible realizar esta operacion en C?
« 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.


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Porque es posible realizar esta operacion en C?
« Respuesta #1 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


En línea

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

Desconectado Desconectado

Mensajes: 103


Ver Perfil
Re: Porque es posible realizar esta operacion en C?
« Respuesta #2 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.  
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Porque es posible realizar esta operacion en C?
« Respuesta #3 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

En línea

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

Desconectado Desconectado

Mensajes: 103


Ver Perfil
Re: Porque es posible realizar esta operacion en C?
« Respuesta #4 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




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.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines