casten explizit?



  • Shade Of Mine schrieb:

    dann lies doch mal ne doku!

    abs ist für int
    und fabs für double

    Interessante "Doku".



  • Daniel E. schrieb:

    Interessante "Doku".

    definitiv geht es hier um C, denn sonst würde der compiler bei double wohl kaum warnen, oder?



  • Shade Of Mine schrieb:

    definitiv geht es hier um C, denn sonst würde der compiler bei double wohl kaum warnen, oder?

    Oder. Wie erkläst Du dir, dass der Compiler scheinbar willkürlich bei doubles warnt und bei floats nicht (mal abgesehen davon, dass das das gute Recht des Compilers ist)?



  • Shade Of Mine schrieb:

    casten sollst du nur, wenn du es musst - also quasi nie.

    Cool, ob die Programmierer der MFC das auch wussten? 😃



  • Daniel E. schrieb:

    Shade Of Mine schrieb:

    definitiv geht es hier um C, denn sonst würde der compiler bei double wohl kaum warnen, oder?

    Oder. Wie erkläst Du dir, dass der Compiler scheinbar willkürlich bei doubles warnt und bei floats nicht (mal abgesehen davon, dass das das gute Recht des Compilers ist)?

    ich hab keinen compiler zur hand, aber ich glaube mich zu erinnern, dass abs() in C++ für
    int, float und long double überladen ist.

    folglich dürfte abs(3.3); keine warnung produzieren (es sei denn der compiler warnt vor double in long double)

    wenn ich jetzt blödsinn geschrieben habe, bite korrigieren.



  • Shade Of Mine schrieb:

    ich hab keinen compiler zur hand, aber ich glaube mich zu erinnern, dass abs() in C++ für
    int, float und long double überladen ist.

    Und long, complex und so (valarray?).

    Meine Frage war, wieso ein Compiler vor f(3.3) warnt, nicht aber nicht vor f(3.3f), mit 'void f(int)' (für den Spezialfall f == abs) und wie man daraus schließen kann, es ginge um C.



  • Nein, es gibt 3 Version für abs, aber ein
    double abs(double)
    gibt es bei mir nicht. Die Funktion hab ich selber schreiben müssen, nachdem ich das zufälligerweise entdeckt habe.



  • Optimizer schrieb:

    Nein, es gibt 3 Version für abs, aber ein
    double abs(double)
    gibt es bei mir nicht. Die Funktion hab ich selber schreiben müssen, nachdem ich das zufälligerweise entdeckt habe.

    kann es sein, dass du math.h statt cmath inkludierst??



  • Jo. Was ist an cmath besser?



  • Optimizer schrieb:

    Jo. Was ist an cmath besser?

    es ist dei C++ Version.

    zB: abs ist fuer mehrere typen ueberladen, so dass du nur
    natuerlich auch sonstige ueberladung und C++ features 😉

    math.h ist die C Version.


Anmelden zum Antworten