2 leichte fragen zur aufklärung



  • Hi,

    Ich hätte hier mal 2 Fragen und zwar:

    Hier benutze ich ein float und weise direkt die Zahl zu:
    float f = 35325235f;

    Ich sehe oft, dass das 35325345f ohne dem f für float geschrieben wird! Was ist der unterschied, wenn ich es mit oder ohne diesen f für float schreibe?

    Frage2:

    Ich lese mit GetModuleFileName() API meinen direkten pfad zu meiner EXE aus wie kann ich den Name meiner exe absplitten? Also das ich den Name bekomme, wie mein programm heisst! (Oder gibt es da 'ne extra funktion nur den name des programmes zu ermitteln? :)?

    gruss,
    jochen kalmbach



  • jochen kalmbach
    => @Admins: Könnt ihr die IP mal bannen?! Du könntest ja mal unter deinem eigenen Namen posten -.-

    AD 2:
    Nimm dir einen String und guck wo von hinten das 1. mal ein \ kommt... die Stelle nimmst du... dann nimmst de dir ne for-Schleife und zählst hoch... wobei der ausgangswert strlen - Stelle ist... in der vorschleife kopierst de das halt in nen anderen string...



  • (D)Evil schrieb:

    AD 2:
    Nimm dir nen string und guck wo von hinten das 1. mal nen \ kommt... die stelle nimmst du... dann strlen - lenge... von da an ist dein ding 🙂 kopier halt einfach alles von da ab in einen neuen string... fertig ist der datei name 🙂

    interpunktion ist wohl nicht deine stärke, wenn Du zu schlecht bist ihm zu helfen dann lass es.



  • Das f für float ist nur dazu da, kennzuzeichnen, dass es sich bei dem Wert um eine float-Zahl handelt (ungarische Notation, wenn ich mich nicht irre). Also nutzlos. 😃



  • Das f macht die Zahl zu einem float-Typ, also 4 Bytes. Ohne f werden 8 Bytes gespeichert und bei der Zuweißung wird konvertiert. Bei floats also immer f an die Zahl hängen sonst wir mehr Speicher pro Zahl verwendet und es muss konvertiert werden.



  • .,- schrieb:

    Das f für float ist nur dazu da, kennzuzeichnen, dass es sich bei dem Wert um eine float-Zahl handelt (ungarische Notation, wenn ich mich nicht irre). Also nutzlos. 😃

    Gast288 schrieb:

    Das f macht die Zahl zu einem float-Typ, also 4 Bytes. Ohne f werden 8 Bytes gespeichert und bei der Zuweißung wird konvertiert. Bei floats also immer f an die Zahl hängen sonst wir mehr Speicher pro Zahl verwendet und es muss konvertiert werden.

    Beides fehlerhaft.
    Das f hat weder etwas mit UN zu tun, noch werden ohne "8 Bytes gespeichert" 😕 .
    Ein Ganzzahlliteral ist per default vom Typ int. Das f Suffix sorgt einfach dafür, dass daraus ein Literal vom Typ float wird. Somit muss der Compiler bei der Zuweisung keine extra Umwandlung von int nach float durchführen und es gibt auch keinen Genauigkeitsverlust, der uU entsteht. Und Speicher wird hier überhaupt nicht verbraucht. Ein Literal ist ein compilezeitkonstanter Ausdruck und benötigt somit keinen Speicher, auf dem der Wert abgebildet werden muss. Ob du die diversen Suffixe für Literale nutzt, ist letztendlich dir überlassen. Ich schreibe sie grundsätzlich nicht, weil eine evtl. Umwandlung bei der Kompilierung erfolgt und somit keine Laufzeit kostet. Zudem finde ich es ohne Suffixe lesbarer. Und der Compiler meckert sowieso, falls Genauigkeit verloren geht. Und dann kann man es ja immer noch hinschreiben.


Anmelden zum Antworten