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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Unsigned int, en bucles infinitos...
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Unsigned int, en bucles infinitos...  (Leído 5,381 veces)
tanychu

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Unsigned int, en bucles infinitos...
« en: 21 Septiembre 2010, 10:06 am »

Muchas gracias por ir resolviendome las dudas que me van saliendo jejeje, esta es mi nueva duda, a ver si podeis solucionarmela, jejeje.

Mi duda es la siguiente:

Resulta que tengo que recoger mediante teclado, un valor que no debe de ser en ningún caso valor negativo.

Por supuesto, lo declaro unsigned int para no darle más tamaño del necesario.

Pero me ocurre lo siguiente, le hago un while para que si el numero es menor de 0 me vuelva a preguntar el valor. Tipo asi.

while (respuesta<0)
{
     cout << lo que sea >>;
     cin >> respuesta;
}

el problema es que al ser unsigned int, si meto un valor negativo me crea un bucle infinito, sé que se puede arreglar poniendole valor entero a la variable pero, de que me sirve entonces? que me enseñen si voy a poner solo valores positivos,cree las variables tipo, unsigned int. no tiene lógica, debe de haber una solución.

a ver si alguien me ilumina jejeje. un saludo!!! :D :D

Editado: Es sobre C++ y uso el compilador wxdev-c++.


« Última modificación: 21 Septiembre 2010, 10:08 am por tanychu » En línea

CaraLimon

Desconectado Desconectado

Mensajes: 10



Ver Perfil
Re: Unsigned int, en bucles infinitos...
« Respuesta #1 en: 21 Septiembre 2010, 10:54 am »

Por supuesto, lo declaro unsigned int para no darle más tamaño del necesario.


El tipo "unsigned int" creo que ocupa lo mismo que un "int", la diferencia está en que el mismo rango que abarca el "int" te lo da el "unsigned" pero a partir de 0, asi puedes llegar más lejos. Así que si es por ahorrar tamaño no hace falta..

Pruebalo con "int" mientras no te den una respuesta mejor.


« Última modificación: 21 Septiembre 2010, 10:57 am por CaraLimon » En línea

Anco

Desconectado Desconectado

Mensajes: 28



Ver Perfil
Re: Unsigned int, en bucles infinitos...
« Respuesta #2 en: 21 Septiembre 2010, 11:41 am »

Estas usando el unsigned int por las razones equivocadas, segun tengo entendido, el unsigned ocupa el mismo espacio que el int normal (como dice CaraLimon), solo que te da la capacidad de almacenar una cantidad mayor de numeros positivos (no creo que sea tu caso). De todas maneras, solo debes usarlo para manejar numeros positivos. Si existe la posibilidad de que ingresen un numero negativo, tienes que usar el int sin el modificador.
Y es posible que el unsigned int, no haya sido el problema fundamental en tu codigo, sino la manera de como lo abordaste (lo digo por lo lo del bucle infinito), .

De todas maneras, si me equivoco espero me corrijan, tengo escasos conocimientos respecto al tema xD
En línea

???
Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: Unsigned int, en bucles infinitos...
« Respuesta #3 en: 21 Septiembre 2010, 11:58 am »

Unsigned int: ocupa el mismo tamaño que un entero (4 bytes). En cambio, tiene un rango de representación mayor ya que solo representa valores enteros positivos (representados en binario natural, mientras que el entero está en complemento a 2 (no confundir la representación con la operación, en este caso es la primera))

Aquello que ocupa menos tamaño es un short (2bytes).

PD: tamaños variables según la arquitectura.
En línea

tanychu

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Unsigned int, en bucles infinitos...
« Respuesta #4 en: 22 Septiembre 2010, 08:23 am »

Gracias, eso esta claro jejee, pero, para ciertas cosas, si se ahorraría uno tamaño, ya que, el rango del unsigned int, en valores positivos, es casi el doble que el int, si a mi me hace falta, utilizar un rango más alto de numeros positivos que los que me permite el int normal, ya tendría que irme a un long int, entonces ya no ahorraría espacio, me comprendeis ahora? jejeje, para ciertas cosas no hace falta pero para otras si, y lo que me gustaría es saber paliar ese problemilla que me sale con el unsigned. saludos!!!!
En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: Unsigned int, en bucles infinitos...
« Respuesta #5 en: 22 Septiembre 2010, 10:54 am »

¡Buenas!

Tanto si introduces un valor positivo como si lo introduces negativo, lo que estaras obteniendo en tu variable entera sera un patron de bits que luego deberas encargarte tu de interpretar...

Si estas esperando un int de 4 bytes (32 bits), e introduces -1, la representacion de este numero y de (2^32 - 1) sera la misma en cuanto al patron de bits, y en general, -n sera lo mismo que 2^32 - n....

Por lo tanto, si esperas un unsigned y alguien te da un entero con signo, en principio no los podras distinguir solo por el valor que contiene la variable. Si quieres puedes leer en una cadena o string la entrada y comprobar si aparecen o no signos negativos...

En cuanto a lo del bucle infinito, no se si es por lo de arriba o no, pon el codigo.

¡Saludos!
En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
tanychu

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Unsigned int, en bucles infinitos...
« Respuesta #6 en: 23 Septiembre 2010, 15:13 pm »

Mañana te pongo el código completo, por q lo tengo en clase, se me olvido el pendrive y no lo tengo en casa, xD, mañana lo coloco completo.. saludos..
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Unsigned int en java?
Java
danielo- 4 4,492 Último mensaje 5 Septiembre 2011, 05:50 am
por [Case]
Como es que un unsigned tiene 16 bits?
Programación C/C++
traviatØ 2 2,158 Último mensaje 24 Octubre 2012, 12:58 pm
por xiruko
[Duda] Unsigned int y enumeraciones
Programación C/C++
xRodak 5 2,627 Último mensaje 6 Febrero 2014, 02:20 am
por rir3760
unsigned int 8 , unsigned int 8 y demas [DUDA] « 1 2 »
Programación C/C++
bash 10 4,064 Último mensaje 9 Abril 2015, 20:08 pm
por bash
Bucles infinitos.
Programación General
kondrag_X1 2 1,750 Último mensaje 3 Enero 2016, 22:13 pm
por Sr_Malweriks
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines