int64/sub



  • hi, warum kann ich nen von 0 nicht 2000000000000000000 (__int64) subtrahieren???? bei mir kommt da immer ne falsche zahl raus (bis 10 stellen geht alles) __Int64 oder verbraucht das vorzeichen soviel????

    mfg dohan



  • Ist dein int 64 signed oder unsigned??? In beide sollte deine Zahl hinein passen, aber das unsigned kann halt keine negativen Zahlen... Das Vorzeichen verbraucht AFAIK nur 1 Bit, daran kann es also nicht liegen.
    Warum speicherst du eigentlich nicht -2000000000000000000 anstatt von 0 zu subtrahieren...?



  • ja na weil ich subtrahieren will also x-y .....
    eigentlich ist doch __int64 signed oder???



  • verschoben ins msvc forum MFC mit dem Visual C++



  • Hi,

    wie kommst Du darauf, dass die Operation falsch ist?
    Debuggst Du oder gibst Du es auf dem Bildschirm aus?

    Ich denke mir, dass Dein Fehler in der Ausgabe liegt. Die Rechenoperation ansich kann auf jeden Fall korrekt durchgeführt werden.

    Edit:
    Gibt Dein Code "-1321730048" aus??

    Legolas

    [ Dieser Beitrag wurde am 27.03.2003 um 07:26 Uhr von Legolas editiert. ]



  • Das Problem ist, dass keine __int64 mit "cout" ausgegeben werden können. Zumindest kann ich es irgendwie nicht 🙂

    Wenn Du es zuvor in einen char umwandelst, dann kannst Du es ausgeben und
    siehst, dass der richtige Wert in test steht.

    int main(int argc, char* argv[])
    {
        __int64 test = 0;
        char *mychar = new char[1000];
    
        test = test - 2000000000000000000;
        _i64toa(test, mychar, 10);
    
        cout << mychar;
    
        delete [] mychar;
        return 0;
    }
    

    Ach ja net meckern wegen dem Code, dass es nicht der bste Weg ist denke ich mir... aber es soll ja nur zeigen, dass das eigentliche Problem nicht existiert 🙂

    Legolas



  • danke für die hilfe ich hatte auch ne fkt zur umwandlung nur das problem war halt das es nur bis zum long im negativen funktioniert hat

    pseudocode

    if (zahl < 0)

    {
    abs(zahl)
    wandleinstring();
    add_vorzeichen();//Minus
    }
    else
    wandleinstring

    .... merkwürdigerweise geht es für beliebige positive zahlen da gibt es kein problem...


Anmelden zum Antworten