c kerdes

Fazekas Mihály michael at goliat.eik.bme.hu
Wed Apr 26 08:45:04 CEST 2006


Tehat valahogy igy nezhetne ki:

-----------------------------
slong utc_time;
...
if(utc_time<ULONG_MAX) utc_time++;
...
-----------------------------
De ebben az esetben (fordito & beallitas fuggvenye), hogy
"atfordul" -e a szamlalo LONG_MIN -re, vagy overflow hibat kapsz.

De ha ULONG_MAX helyett siman LONG_MAX -ot hasznalsz, akkor 
normalisan fog mukodni.
Raadasul gyorsabb is, mint amit Te irtal:
if(utc_time < (((ulong) -1)+1)/2 ) utc_time++;

Gyorsabb, mivel konstansokkal dolgozik, es nem vegez el foloslegesen
ket matematikai muveletet (osszeadas es osztas).

A tenyleg jo megoldas:
-----------------------------
#include <sys/limits.h>
...
slong utc_time;
...
if(utc_time<LONG_MAX) utc_time++;
...
-----------------------------

-- 
mailto:michael at goliat.eik.bme.hu
Phone: 463-1966




More information about the Elektro mailing list