Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: 0xDani en 18 Octubre 2012, 14:24 pm



Título: Desbordamiento del tipo char
Publicado por: 0xDani en 18 Octubre 2012, 14:24 pm
Bueno la cuestion es: yo leo un byte de un archivo, lo almaceno en una variable tipo char, le sumo un numero del 1 al 11, y se pasa de 127, es decir, se desborda el tipo. Luego escribo ese byte a otro archivo. Y otra aplicacion que lea ese archivo y conozca que numero se le sumo a ese byte, ¿como lo vuelve a convertir en el original, si se desbordo el tipo?

Quiza no me he explicado muy bien, si no lo entienden pregunten.

Saludos.


Título: Re: Desbordamiento del tipo char
Publicado por: rir3760 en 18 Octubre 2012, 16:55 pm
Una respuesta general (si se trata del lenguaje C) no es posible porque cuando un tipo entero con signo se desborda se genera comportamiento no definido (cualquier cosa puede pasar). Intenta revisando la documentación de tu compilador, tal vez ahí se describa el funcionamiento.

Un saludo


Título: Re: Desbordamiento del tipo char
Publicado por: 0xDani en 18 Octubre 2012, 19:43 pm
El compilador es GCC, haciendo algunas pruebas he comprobado que si a una variable de tipo char le sumo 1 pasa a valer -128.


Título: Re: Desbordamiento del tipo char
Publicado por: x64core en 18 Octubre 2012, 22:53 pm
El compilador es GCC, haciendo algunas pruebas he comprobado que si a una variable de tipo char le sumo 1 pasa a valer -128.
Pues claro,estamos hablando de un signed char, es porque el MSB valdra 1 si es un numero con negativo, y el rango sera de
-128 - 127, son cosas basicas ¬¬

Pero respondiendo a tu pregunta, creo que estas buscando es un unsigned char no? el rango es 0-255.


Título: Re: Desbordamiento del tipo char
Publicado por: Stakewinner00 en 18 Octubre 2012, 22:56 pm
eso de k son cosas básicas puede ser pero hay gente k como yo que aprendemos solos y sabemos programar en C++ y no sabemos demasiada teoría, y creo que ese es su caso XD


Título: Re: Desbordamiento del tipo char
Publicado por: 0xDani en 19 Octubre 2012, 15:51 pm
eso de k son cosas básicas puede ser pero hay gente k como yo que aprendemos solos y sabemos programar en C++ y no sabemos demasiada teoría, y creo que ese es su caso XD

[broma]Incorrecto, me lei bastantes capitulos de C++ con Clase  :P[/broma]. No, mi pregunta no era esa, la pregunta es si yo tengo un -124, y se que se le sumo 7 para obtenerlo, el tipo se ha desbordado pero como obtengo el numero original? Puede parecer una tonteria, quiza es que ya estoy bloqueado con esto pero no me sale  :xD.

Saludos.