Pregunta sobre get_timer()

Started by Hola, February 28, 2019, 12:16:01 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Hola

Hola a todos, estaba haciendome un cronometro en mi programa basandome en el codigo que se encuentra en el manual de osk..y se me vino una duda, a lo mejor tecnica.., la cosa es: get_timer obtiene el tiempo que lleva ejecutado el programa (en milesimas), entonces yo con una var tiempo1=get_timer(); obtengo ese dato. La var tiempo1 es INT. La cuestion es, si yo dejo el programa en ejecucion un par de dias (por exagerar), supongo que en algun momento el tiempo de ejecucion llega a 347952958329439 o algo asi. Entonces, cuando yo quiera obtener el valor del tiempo transcurrido con get_timer() en la var 'tiempo1', ¿no daria error por ser mayor el numero obtenido, al soportado por las vars tipo INT?


o aunque sea var tipo DWORD, la pregunta es la misma. Bueno, creo que se entiende mi pregunta, que opinion teneis?

Arcontus

Yo creo que llegado el valor maximo vuelve a 0 al sumar 1. Pero nunca lo he probado la verdad.
Suena interesante.
5Leaps, el primer juego comercial desarrollado para BennuGD. http://www.5leaps.com

SplinterGU

creo que a los 24 dias daria vuelta... con signo, si lo tomas como un unsigned, serian 48 dias... creo...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Hola

O sea lo que dices es que, tomando en cuenta que la var es con signo, tomaria 24 dias en llegar al valor maximo de int (2147483647) y daria la vuelta?

Arcontus

Quote from: Hola on February 28, 2019, 06:43:03 PM
O sea lo que dices es que, tomando en cuenta que la var es con signo, tomaria 24 dias en llegar al valor maximo de int (2147483647) y daria la vuelta?
Si, estoy casi seguro de que si. Llegado al número máximo +1 debería ser el numero mínimo, aun que también pudiera dar algún tipo de excepción pero no lo creo.
5Leaps, el primer juego comercial desarrollado para BennuGD. http://www.5leaps.com

SplinterGU

Quote from: Hola on February 28, 2019, 06:43:03 PM
O sea lo que dices es que, tomando en cuenta que la var es con signo, tomaria 24 dias en llegar al valor maximo de int (2147483647) y daria la vuelta?

si no me fallaron los calculos, si.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

Quote from: Arcontus on February 28, 2019, 07:12:40 PM
Quote from: Hola on February 28, 2019, 06:43:03 PM
O sea lo que dices es que, tomando en cuenta que la var es con signo, tomaria 24 dias en llegar al valor maximo de int (2147483647) y daria la vuelta?
Si, estoy casi seguro de que si. Llegado al número máximo +1 debería ser el numero mínimo, aun que también pudiera dar algún tipo de excepción pero no lo creo.


no puedes asegurar +1, la granularidad no es de a 1 milisegundo...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Hola

Ah bien, gracias. Recien hice la prueba sumando 1 al valor maximo de DWORD por ejemplo y se reinicia en 0, asi que aunque tarde 48 dias en superar el valor maximo, o 2 dias, es igual. Lo decia el manual de bennu, no se por que no me fije...lol


QuoteOtra cosa importante: los tipos de dato enteros tienen un rango limitador: cuando sumas o restas una cantidad que provoca que el número salga fuera del rango que admiten, los bits más significativos del nuevo número se pierden. En otras palabras menos técnicas: se provoca que el número "dé la vuelta": si a una variable WORD que contiene 65535 le sumas 1, el valor resultante es 0 en lugar de 65536, ya que 65536 queda fuera del rango admitido por los tipos WORD.

SplinterGU

yo diria que consideres que si el valor que te da es menor a supongamos 5000, es que se reinicio... (o paso 5 segundos desde que arranco)
Download Lastest BennuGD Release: http://www.bennugd.org/node/2