Warum 1.f?



  • Ich vertraue einfach dem Compiler, den richtigen Typ fuer 1 oder 1.0 herauszufinden. Bei Ueberladung geht das meist schief, aber da darf er mir dann auch eine Warnung preasentieren. Ich lese die sogar.


  • Mod

    knivil schrieb:

    Ich vertraue einfach dem Compiler, den richtigen Typ fuer 1 oder 1.0 herauszufinden. Bei Ueberladung geht das meist schief, aber da darf er mir dann auch eine Warnung preasentieren. Ich lese die sogar.

    Das Problem ist aber, dass er, wenn eine neue Überladung hinzukommt, nicht mehr warnt, sondern stillschweigend die falsche Funktion nimmt. Schließlich willst du ja eindeutig die neue int Variante der Funkton und nicht die alte mit double, sonst hättest du ja ein double-Argument hingeschrieben.



  • Stimmt ...



  • void foo(float);
    foo(1.f); // (1)
    foo(1);   // (2)
    

    Ich finde hier (1) durchaus klarer, weil gleich ersichtlich ist, dass ein Fliesskommatyp verwendet wird. Wenn ich z.B. foo() ein Weilchen nicht mehr benutzt habe und dann merke, eine leichte Modifikation des Arguments wäre angebracht, kann ich gleich 1.5f schreiben. Sonst bin ich verunsichert, weil ich davon ausgehe, dass Ganzzahlen erwartet werden (nur meine Sichtweise).

    Wieso sollte man nicht die richtigen Literale benutzen? Man setzt ja auch nicht false ein, wenn 0 gebraucht wird...


Anmelden zum Antworten