2 variablne voneinander abziehn



  • hi
    ich habe 2 uint64 variablen und will die voneinander abziehn damit der entwert nicht größer als 5 oder so ist

    habs derzeit so gemacht

    updiff = (Total0() - Total2());
    
    			if(  updiff > 9.2*1024*1024)
    ...
    

    jedoch funzt das nicht



  • Und was genau funktioniert daran nicht?

    (btw, aus dem Code-Schnipselchen kann man gar nichts erkennen)



  • es funktioniert einfach nicht

    der gibt die ausgabe schon bevor der wert 9,2 erreicht wurde aus!
    und er soll ja die ausgabe erst rausgeben wenn der wert überstiegen wurde und das funktioniert nicht.



  • Dann zeig doch mal etwas mehr Code - wie gesagt kann man dort nichts erkennen.



  • [cpp]
    uint64 updiff;

    updiff = (UploadedTotal() - DownloadedTotal());

    if( updiff > 9.2*1024*1024)

    {
    Log(_T("OKAY"));
    return true;
    }



  • Und was für Werte bekommst du von UploadedTotal() und DownloadedTotal()? (ein uint* ist unsigned, wenn die Differenz negativ wird, greift die Modulo-Arithmetik und du bekommst ein Ergebnis in der Größenordnung von 264)



  • achso
    mist das wusste ich nicht

    ja die totals sind auch als uint64 deklariert
    und da die ja nicht ins negative gehen dann bringt das auch nichts

    kann ich das irgendwie anders lösen ohne die variable zu ändern

    der total gibt MB werte aus, bzw. byte werte
    eben was man gerade zu einem ftp server hochgeladen hat bzw. ein interener firmenclient.



  • Hi,

    also Dein Sprachgebrauch lässt "Ungeübtheit" vermuten, deswegen mal kurz zur Klärung: updiff ist die einzige Variable, die Du überhaupt in den Händen hältst. Und dass Du die Rückgabewerte der Funktionen ändern kannst, wird aller Voraussicht nach auch nicht vorkommen...

    Wenn Du Sorge vor einem Überlauf der Differenz hast, kannst Du erst die Funktionswerte gegeneinander checken und ggf. "andersherum abziehen":

    if(UploadedTotal() > DownloadedTotal()) updiff = UploadedTotal() - DownloadedTotal();
    else updiff =  DownloadedTotal() - UploadedTotal()
    

    Gruß,

    Simon2.


Anmelden zum Antworten