x = "Natürliche Zahl" ???



  • ChrisPlusPlus schrieb:

    (const double &dValue)
    

    😕 😕



  • Freak_Coder schrieb:

    ChrisPlusPlus schrieb:

    (const double &dValue)
    

    😕 😕

    wurde schon auf wtf hingewiesen, ach ja weiter oben^^



  • Dann nehmt eben statt int long ihr Klugscheißer 👎



  • man könnte auch auf Bitebene die Mantisse untersuchen 😉



  • (const double &dValue) ist sauberer Code

    Paellon und Freak_Coder ihr kennt nicht den tieferen Sinn dieser Art der Parametrisierung nicht? Hmm
    😕



  • Pellaeon schrieb:

    wurde schon auf wtf hingewiesen, ach ja weiter oben^^

    😃



  • ChrisPlusPlus schrieb:

    (const double &dValue) ist sauberer Code

    Paellon und Freak_Coder ihr kennt nicht den tieferen Sinn dieser Art der Parametrisierung nicht? Hmm
    😕

    😕 😕 Ääääh, Nein! 😃

    Dann sag uns mal bitte den tieferen Sinn...
    Da bin ich aber mal gespannt ![wur]



  • Nun, so legt der Copykonstuktor bei jedem Parameter eine Kopie des Typs oder Objektes an. Diesen zum Teil performancefressende Umstand wird durch die Referenz-Operator entgegen gewirkt. Daß aber die Referenz nicht überschrieben werden kann, wird sie einfach als Konstant festgelegt.

    Desweiteren empfiehlt Scott Meyers wann immer möglich const zu verwenden. Das erhöht die Lesbarkeit von code und macht ihn mit unter auch fehlerresistenter!

    QED, meine Herren



  • ChrisPlusPlus schrieb:

    Nun, so legt der Copykonstuktor bei jedem Parameter eine Kopie des Typs oder Objektes an. Diesen zum Teil performancefressende Umstand wird durch die Referenz-Operator entgegen gewirkt. Daß aber die Referenz nicht überschrieben werden kann, wird sie einfach als Konstant festgelegt.

    Bei einem eingebauten Typ wie double ???
    Du werwechselst da was mit Objekten...

    (double dValue)
    

    hätte vollkommen gereicht.



  • Bei double selbstverständlich nicht! Benutzerdefinierte Typen (structs udgl.!)

    (double &dValue) ... reicht technisch selbstverständlich auch, ist aber aus besagten Gründen unsauber!



  • ChrisPlusPlus schrieb:

    Dann nehmt eben statt int long ihr Klugscheißer 👎

    Bei mir sind int und long gleich groß. Selbst wenn das nicht so wäre, ist es nur Schmerzverlagerungstherapie. Nimm einfach irgendeinen Wert, der außerhalb des Wertebereichs des größten Ganzzahltyps auf deiner Plattform liegt, und schon funktioniert deine Funktion nicht mehr. Und was ist mit den negativen Zahlen?

    P.S.: Mit deiner Ausdrucksweise wirst du hier viele Freunde finden.



  • ChrisPlusPlus schrieb:

    Bei double selbstverständlich nicht!

    Und wieso schreibst du das dann ...



  • Tut mir leid! Nun, ich fand diesen Einwand einfach nur doof! Man ist eben nur auf ein bestimmtes Intervall von Werten beschränkt, da hilft auch kein 16-Byte long uder ähnliches! Wäre es nicht das C++-Forum, hätte ich ASSERT selbstverständlich vorgeschlagen.



  • ChrisPlusPlus schrieb:

    Nun, so legt der Copykonstuktor bei jedem Parameter eine Kopie des Typs oder Objektes an. Diesen zum Teil performancefressende Umstand wird durch die Referenz-Operator entgegen gewirkt. Daß aber die Referenz nicht überschrieben werden kann, wird sie einfach als Konstant festgelegt.

    Desweiteren empfiehlt Scott Meyers wann immer möglich const zu verwenden. Das erhöht die Lesbarkeit von code und macht ihn mit unter auch fehlerresistenter!

    QED, meine Herren

    lol 😃

    so, hier mal die assembler-entsprechung für deinen referenz-kram (ein bisschen vereinfacht dargestellt):
    by-value:

    ; aufrufer
    push  eax ; argument übergeben
    
    ; in der funktion
    
    pop   eax ; *hust* double hat ja nur 32 bits...
    

    by-reference

    ; aufrufer
    push   eax ; erstmal auf den stack pushen, weil die register ja überschrieben werden
    ; ...
    push   ebx + 4 ; adresse übergeben
    
    ; funktion
    
    pop   ebx      ; adresse holen
    mov   eax, [ebx] ; wert an adresse in ebx nach eax schreiben
    

    ich hoffe, dass ich mich gerade richtig an mein asm-tut erinnert hab... 🙄

    das mit dem const stimmt schon, aber const macht alles nur unnötig schwerer bei bult-ins.



  • ChrisPlusPlus schrieb:

    Tut mir leid! Nun, ich fand diesen Einwand einfach nur doof!

    Der Einwand musste kommen, wenn du mit besonderem Hinweis auf Sauberkeit behauptest, dass dein Code doubles prüft.

    Wäre es nicht das C++-Forum, hätte ich ASSERT selbstverständlich vorgeschlagen.

    assert gibt's im Standard. #include <cassert>.



  • ChrisPlusPlus schrieb:

    Wäre es nicht das C++-Forum, hätte ich ASSERT selbstverständlich vorgeschlagen.

    assert wird auch noch in c++ verwendet ➡ <cassert>



  • assert

    Asche auf mein Haupt! 😉

    Bei mir sind int und long gleich groß.

    Bei mir nicht unbedingt! Das ist nämlich Maschinenabhängig! Eines aber trifft immer zu

    int <= long



  • terraner: double hat doch normalerweise 80 bits??



  • hmmmmmmmmmm? schrieb:

    terraner: double hat doch normalerweise 80 bits??

    long double hat 80 😉 zumindest bei mir. double hat 64 bit(bei mir ;))



  • hmmmmmmmmmm? schrieb:

    terraner: double hat doch normalerweise 80 bits??

    64 bit wie otze schon sagte. ich habe den double im asm-code zur vereinfachung nur mal ein bisschen kleiner gemacht...


Anmelden zum Antworten