[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