SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: AnioN en Domingo 25 de Marzo de 2007, 16:59

Título: Re: Imprimir Ascii
Publicado por: AnioN en Domingo 25 de Marzo de 2007, 16:59
Hola, tengo una duda, quisiera imprimir el codigo ascii y lo realizo de la siguiente manera.

Código: Text
  1. #include <stdio.h>
  2.  
  3. void main(void) {
  4.  
  5. int a=0;
  6.  
  7. do{
  8.  
  9.   printf("%c - %d\n",a,a);
  10.  
  11.   a++;
  12. }while(a<=255);
  13.  
  14. }
  15.  
De esa manera funcioan perfecto, pero si en lugar de usar un int uso un char no funciona. Alguien sabe el por que?. Dejo el codigo cambiado asi lo ven.

Código: Text
  1. #include <stdio.h>
  2.  
  3. void main(void) {
  4.  
  5. char a=0;
  6.  
  7. do{
  8.  
  9.   printf("%c - %d\n",a,a);
  10.  
  11.   a++;
  12. }while(a<=255);
  13.  
  14. }
  15.  
Título: Re: Imprimir Ascii
Publicado por: AnioN en Domingo 25 de Marzo de 2007, 17:04
creo que el problema esta en que hay overflow en la variable, pero si la declaro con el modificador unsigned pasa lo mismo.
Código: Text
  1. #include <stdio.h>
  2.  
  3. void main(void) {
  4.  
  5. unsigned char a=0;
  6.  
  7. do{
  8.  
  9.   printf("%c - %d\n",a,a);
  10.  
  11.   a++;
  12. }while(a<=255);
  13.  
  14. }
  15.  
La solucion que encontre es que cuando llega al valor 256 se produce OF y por lo tanto "explota" por ahi. La solucion que encontre es esta:

Código: Text
  1. #include <stdio.h>
  2.  
  3. void main(void) {
  4.  
  5. unsigned char a=0;
  6. int sen = 1;
  7. do{
  8.   if(a==255) {
  9.       sen = 0;
  10.   }
  11.   printf("%c - %d\n",a,a);
  12.  
  13.   a++;
  14.  
  15.  
  16. }while(sen);
  17.  
  18. }
  19.  

Gracias de todas formas.
Título: Re: Imprimir Ascii
Publicado por: Eternal Idol en Domingo 25 de Marzo de 2007, 17:06
¿Que rango de valores puede contener un BYTE? ¿Es posible que no sea menor o igual a 255?
Título: Re: Imprimir Ascii
Publicado por: AnioN en Domingo 25 de Marzo de 2007, 17:10
Cita de: "Eternal Idol"
¿Que rango de valores puede contener un BYTE? ¿Es posible que no sea menor o igual a 255?
unsigned es esta 255, pero ya con 256 hay OF, y ahi estaba el problema con el DO-WHILE.
Título: Re: Imprimir Ascii
Publicado por: Eternal Idol en Domingo 25 de Marzo de 2007, 17:12
Cita de: "AnioN"
unsigned es esta 255, pero ya con 256 hay OF, y ahi estaba el problema con el DO-WHILE.
El problema es que nunca sera 256 sino que pasara a 0 al producirse el overflow.
Título: Re: Imprimir Ascii
Publicado por: pabloreda en Domingo 25 de Marzo de 2007, 18:48
hola anion

proba cambiando la condicion del while a
a!=0
funcionaria con char y unsigned char tambien