Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: GrEnDeL en 29 de Marzo de 2003, 05:22:06 PM

Título: Valor máximo de un entero
Publicado por: GrEnDeL en 29 de Marzo de 2003, 05:22:06 PM
                                Necesito saber cuando una variable de tipo unsigned int ha llegado a su valor máximo.

Cada compilador tendrá un valor máximo, pero ¿hay alguna constante o función que te diga el valor máximo independientemente del compilador que use? Hombre, supongo que si decremento cero obtendré el máximo, pero ¿hay alguna forma más elegante? ;)

Lo necesito para saber si cuando una variable se va a desbordar.

Es una tontería, pero si alguien lo sabe pues...

Thnks!                                
Título: Valor máximo de un entero
Publicado por: Mars Attacks en 29 de Marzo de 2003, 06:01:21 PM
                                Utiliza sizeof(loquesea). Nunca he tenido esas dudas, pero supongo que funcionará.
printf("%dn",sizeof(GrEnDeL));
;)                                
Título: Valor máximo de un entero
Publicado por: MChiz en 30 de Marzo de 2003, 12:44:14 PM
                                Hola:

El sizeof no te va a funcionar. Sizeof devuelve el numero de bytes que ocupa el tipo de variable que le pases ( char, por ejemplo ) o si le pasas una variable, te dara el tamaño en bytes del tipo de esa variable; es decir, lo mismo :b
Para hacer lo que tu dices, no hay ningun problema excepto si trabajas en modo plano o modo real. Tendrias problemas con los ints, que en modo plano son 32 bits y en modo real son 16. Pero lo que no va a cambiar es lo que ocupe un bit. Es decir, 32 bits, en cualquier compilador, van a ser 32 bits.
Lo que yo te recomiendo que hagas es que, si por ejemplo quieres una variable de 16 bits, utilices el tipo short ( aunque trabajes en modo real ). Si quieres una variable de 32 bits, utiliza el long, en vez del int.
Bueno, pos es asi de facil :)
Adios!                                
Título: Valor máximo de un entero
Publicado por: BeRSeRKeR en 30 de Marzo de 2003, 12:44:47 PM
                                Mínimo valor posible de un entero:

min = -2 ^ ((sizeof(int) * 4) - 1) = -2147483648
max = (2 ^ ((sizeof(int) * 4) - 1)) - 1 = 2147483647

con eso podrás saber cuándo tu variable está a punto de desbordarse...

Saludos                                
Título: Valor máximo de un entero
Publicado por: BeRSeRKeR en 30 de Marzo de 2003, 01:02:51 PM
                                Publicado: Dom Mar 30, 2003 11:44 am

MChiz, si lo hacemos a proposito no nos sale xDDDDD

Saludos                                
Título: Valor máximo de un entero
Publicado por: GrEnDeL en 30 de Marzo de 2003, 01:32:10 PM
                                Oye, pues muchas gracias, voy ahora mismo a probarlo!!!                                
Título: Valor máximo de un entero
Publicado por: BeRSeRKeR en 30 de Marzo de 2003, 01:49:10 PM
                                Aclarar que el rango [-2147483648, 2147483647] es suponiendo que un int sea de 32 bits...pero al utiliza el sizeof(int) pues no hay problema ya que te devuelve el tamaño en bytes del entero...

Saludos                                
Título: Valor máximo de un entero
Publicado por: jpastor en 30 de Marzo de 2003, 03:59:27 PM
                                También se puede mirar/usar la cabecera limits.h.                                
Título: Valor máximo de un entero
Publicado por: GrEnDeL en 30 de Marzo de 2003, 05:01:44 PM
                                Pues es verdad...

Hay un define llamado UINT_MAX que te dice el valor máximo del unsigned int, pero digo yo ¿esta constante se puede encontrar en todos los compiladores de C++? Osea que si es estandar...

Parece que si, porque lo he mirado en el Visual C++ y en Dev-C++ y vienen.

Pues muchas gracias JPastor ;)                                
Título: ....
Publicado por: Grugnorr en 30 de Marzo de 2003, 07:35:36 PM
                                limits es parte del standard, así que debería venir                                
Título: Valor máximo de un entero
Publicado por: Mars Attacks en 30 de Marzo de 2003, 07:38:10 PM
                                Qué cacao. Y menuda compenetración vosotros dos XD
Y perdón por el fiasco  :oops:                                
Título: Valor máximo de un entero
Publicado por: MChiz en 30 de Marzo de 2003, 11:54:40 PM
                                Que bueno Berseker XDD es la Fuerza, oh maestro!! :bbbb
Anda Mars, como si ninguno nos equivocasemos :)
Yo si que pido perdon por mi solucion; es la mas trapera :b
Adioos!