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!
Utiliza sizeof(loquesea). Nunca he tenido esas dudas, pero supongo que funcionará.
printf("%dn",sizeof(GrEnDeL));
;)
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!
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
Publicado: Dom Mar 30, 2003 11:44 am
MChiz, si lo hacemos a proposito no nos sale xDDDDD
Saludos
Oye, pues muchas gracias, voy ahora mismo a probarlo!!!
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
También se puede mirar/usar la cabecera limits.h.
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 ;)
limits es parte del standard, así que debería venir
Qué cacao. Y menuda compenetración vosotros dos XD
Y perdón por el fiasco :oops:
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!