Ist ein Float auf einem 32Bit Windows immer 32bit groß?



  • Oder ist das Computer abhängig?



  • Ich denke fast, dass das compilerabhängig ist.

    MfG SideWinder



  • Ich arbeite mit VC6
    Und das hier funktioniert zu meiner Verwunderung
    Ist das dann auf anderen Rechnern auch so?

    double Nulltest=0.000000000000000000000000000000004;
    
    float Nullf=(float)Nulltest;
    
    str.Format("%.33f",Nullf);
    MessageBoxA(NULL, str, NULL,  MB_OK);
    
    //ausgabe 0.000000000000000000000000000000004
    

    Und hier der Assembler Teil

    ; 2435 : double Nulltest=0.000000000000000000000000000000004;
    
    	mov	DWORD PTR _Nulltest$[ebp], 2008686428	; 77ba1f5cH
    	mov	DWORD PTR _Nulltest$[ebp+4], 959759593	; 3934c4e9H
    
    ; 2436 : 
    ; 2437 : float Nullf=(float)Nulltest;
    
    	fld	QWORD PTR _Nulltest$[ebp]
    	fst	DWORD PTR _Nullf$[ebp]
    
    ; 2438 : 
    ; 2439 : str.Format("%.33f",Nullf);
    
    	sub	esp, 8
    	fstp	QWORD PTR [esp]
    	push	OFFSET FLAT:$SG73672
    	mov	ecx, DWORD PTR _this$[ebp]
    	add	ecx, 1154				; 00000482H
    	push	ecx
    	call	?Format@CString@@QAAXPBDZZ		; CString::Format
    	add	esp, 16					; 00000010H
    

    Mir ist geht es jetzt um die Frage ob sich mein Code dann auf anderen Rechnern genauso verhält??



  • im Standard sind nur Mindestbitbreiten angegeben, also muss das nicht überall gleich sein.



  • Ja aber ein DWORD ist doch immer 32 BIT groß oder nicht?.
    Der Standart interessiert mich herzlich wenig wenn ich Anwendungen mit VC für 32Bit Windows manche.
    Ich habe ja schon fast drauf gewartet das wieder einer mit den Verweis auf den Standart kommt.
    Ich müsste das aber schon genau wissen wie sich das verhält.



  • Also was willst du dann genau wissen? Ob float auch dann 32bittig ist, wenn du dein .exe auf einem anderen Rechner ausführst?



  • *rofl* Überleg doch mal: Wenn dich nur dein Compiler interessiert, schaust du nach was der kann und gut. Dann wird das so kompiliert und du hast immer die Bitbreite mit der das erstellt wurde. Er ändert die mal einfach von Projekt zu Projekt^^



  • Float schrieb:

    Ich habe ja schon fast drauf gewartet das wieder einer mit den Verweis auf den stan**** kommt.

    *hehe* Ich hab auf den Standard und nicht den Standart verwiesen 😃

    Das nächste mal evtl. genauer sagen was du willst. 🙂



  • Ringding schrieb:

    Also was willst du dann genau wissen? Ob float auch dann 32bittig ist, wenn du dein .exe auf einem anderen Rechner ausführst?

    Ja im die Frage geht es mir im Prinzip und ob die Float auch genauso interpretiert wird wie auf meinem Rechner , also ob die obige Funktion auf jedem Rechner auch das selbe Ergebnis bringt.



  • Ja, das wird überall so sein.



  • Besten Dank für eure Hilfe

    Gruß Jens


Anmelden zum Antworten