Verständnis Problem bei Konvertierung



  • Hallo Leute,

    kann mir jemand bitte mal erklären welchen Sinn diese beiden Codezeilen haben?

    dVal =(double) * (LONG*) &dVal;

    dVal =(double) * (LONGLONG*) &dVal;


  • Mod

    newbie0815 schrieb:

    Hallo Leute,

    kann mir jemand bitte mal erklären welchen Sinn diese beiden Codezeilen haben?

    dVal =(double) * (LONG*) &dVal;

    dVal =(double) * (LONGLONG*) &dVal;

    Ist der Code ein Witz?
    Eine Aufgabe?
    Ich schreibe ihn Dir mal um, vieleicht wird es Dir dann klar:

    dVal = static_cast<double>(* reinterpret_cast<LONG*>( &dVal ) );
    
    dVal = static_cast<double>(* reinterpret_cast<LONGLONG*>( &dVal ) )
    

    Eigentlich absolut unsinnnig.



  • Naja ein Witz oder nicht ich habe die Funktionen in einem vorhanden Projekt entdeckt und ich verstehe den Sinn absolut nicht.

    double CTestApp::ToSignedLong(double dVal)
    {
    dVal =(double) * (LONG*) &dVal; 
    return dVal;
    }
    

    Es ist keine Aufgabe ich versuche mich nur irgendwie in das Projekt reinzufuchsen um es zu verstehen warum man so etwas macht.


  • Mod

    Es macht IMHO gar keinen Sinn, die ersten 4 Bytes eines double als LONG zu interpretieren und dann als double auszugeben...

    Absoluter Quatsch.



  • Es ist nicht wirklich unsinnig dies zu machen. Ob es Sinn macht, ist aber eine andere Frage. Soll heißen es passiert durchaus dabei etwas, und zwar blendest du die anderen 32 Bit einfach aus. Im konkreten Fall beschneidest du die Mantisse. Weiteres unter: ANSI/IEEE Std 754-1985; IEC-60559:1989


Anmelden zum Antworten