• Lunes 29 de Abril de 2024, 02:40

Autor Tema:  Re: Imprimir Ascii  (Leído 1399 veces)

AnioN

  • Miembro MUY activo
  • ***
  • Mensajes: 339
    • Ver Perfil
Re: Imprimir Ascii
« en: Domingo 25 de Marzo de 2007, 16:59 »
0
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.  

AnioN

  • Miembro MUY activo
  • ***
  • Mensajes: 339
    • Ver Perfil
Re: Imprimir Ascii
« Respuesta #1 en: Domingo 25 de Marzo de 2007, 17:04 »
0
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.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Imprimir Ascii
« Respuesta #2 en: Domingo 25 de Marzo de 2007, 17:06 »
0
¿Que rango de valores puede contener un BYTE? ¿Es posible que no sea menor o igual a 255?

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

AnioN

  • Miembro MUY activo
  • ***
  • Mensajes: 339
    • Ver Perfil
Re: Imprimir Ascii
« Respuesta #3 en: Domingo 25 de Marzo de 2007, 17:10 »
0
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.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Imprimir Ascii
« Respuesta #4 en: Domingo 25 de Marzo de 2007, 17:12 »
0
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.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

pabloreda

  • Miembro MUY activo
  • ***
  • Mensajes: 125
    • Ver Perfil
    • http://www.reda4.org
Re: Imprimir Ascii
« Respuesta #5 en: Domingo 25 de Marzo de 2007, 18:48 »
0
hola anion

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