PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : struct timeval;



f0rtex
14-10-2004, 13:31
Hi folks!

Folgendes Phänomen:


timeval tvb[ACOUNT], tve[ACOUNT];
...

unsigned int avg;
for (int i = 0; i < ACOUNT; ++i)
avg += 10^6*(tve[i].tv_sec - tvb[i].tv_sec) + (tve[i].tv_usec - tvb[i].tv_usec));

...

return avg/ACOUNT; // bewusstes Abschneiden!!!


Alle Elemente des timeval-structs sind auf 0 initialisiert.
Wenn ich nun den Return-Value ausgebe, bekomme ich 10.
Weiss jemand wieso?

MfG
f0rtex

wraith
14-10-2004, 14:00
Alle Elemente des timeval-structs sind auf 0 initialisiert.
Wenn ich nun den Return-Value ausgebe, bekomme ich 10.
Weiss jemand wieso?

Wenn alle Einträge 0 sind, dann wird dein Schleifenrumpf zu:
avg += 10 ^ 0;
also (binär) 1010 xor 0000, und das ist .... (binär) 1010, dezimal 10.
Jetzt summierst du ACOUNT mal 10 auf, also 10 * ACOUNT, nachher teilst du durch ACOUNT.
Frage: Was kommt raus?

Wahrscheinlich wolltest du pow statt ^ haben.

f0rtex
14-10-2004, 14:11
Danke!!!

Die Zeichen richtig zu deuten ist eine Kunst ;-)
Das ist einer dieser peinlichen Fehler...

Du hast ein Bier zugute von mir. (Melde dich falls du in Zürich unterwegs sein solltest)

greets
f0rtex