[LUGOS-PROG] merjenje easa nataeneje kot na sekunde
Ales Smrdel
aless at nikita.fri.uni-lj.si
Fri Nov 2 12:45:31 CET 2001
> >Tu bi jaz poklical gettimeofday(stop, NULL);
> segfaulta ne vec, vendar sem se kar nekaj casa zabaval, da sem potem iz teh
> podatkov dobil ven pravilni rezultat ....
>
>
> pravilno deluje tole:
>
> rezultat=stop->tv_usec - ura->tv_usec;
> rezultat/=1000000;
> rezultat+=stop->tv_sec - ura->tv_sec;
>
> ne deluje pa tole:
>
> rezultat=(stop->tv_sec - ura->tv_sec) + ((stop->tv_usec -
> ura->tv_usec)/1000000);
>
> ceprav sta izraza po mojem menju enakovredna...
>
> brane
V bistvu nista enakovredna, ker shranjujes rezultat v prvem primeru v
spremenljivko tipa double in program ve, da uporabljas float deljenje,
in ti avtomaticno izvede type cast, v drugem primeru pa se ti izvedejo
najprej uklazi v vseh oklepajih, kar da kot rezultat longint, nakar se
enkrat delis z longint, kar da kot rezultat ponovno longint. Avtomaticen
type cast se izvede sele v koncni prireditvi.
Pravilno bi bilo npr:
rezultat=(stop->tv_sec - ura->tv_sec) +
((double)(stop->tv_usec - ura->tv_usec)/1000000.);
pri cemer ta ^ cast ni potreben zaradi float daljenja ^
aless
More information about the lugos-prog
mailing list