return i++;



  • Hallo,

    mir ist bei der simplen Methode hier:

    int foo(){
    int i = 0;
    return (i++);
    }
    

    Warum da 0 rauskommt, es müsste doch eigentlich eine 1 sein, oder?

    i++ Speichert hier den Wert, inkrementiert und return aber den alten, gespeicherten Wert, obwohl es Post Inkrement ist.

    Kann mir das jemand genau erklären?



  • eben weil es post-inkrement ist... da wird der Wert erst übergeben und dann erhöht



  • Öhm ja, stimmt eigentlich, nun frag ich mich, wo der Witz hier sein soll...

    Kann man diesen Thread löschen? 🙂


  • Mod

    Es besteht ein Unterschied zwischen der Bestimmung des Wertes eines Ausdrucks und Seiteneffekten, die die Veränderung des Zustands von Objekten verursachen (oder darstellen).
    Rufst du bei der Auskunft an und fragst, wieviele Antworten sie heute schon gegeben hat und waren das bis jetzt 10 Antworten, so wird sie dir 10 sagen und bei sich nebenbei eine weitere Antwort abhaken. Das ist Postfixinkrement: stellst du die Frage nochmal, so wirst du die Antwort 11 erhalten usw.
    Fragst du dagegen in der gleichen Situation, wieviele Fragen gestellt wurden, so wird sie dir gleich mit 11 antworten, dann mit 12 usw. (wir nehmen an, dass zu jeder Frage genau eine Antwort gegeben wurde) - das entspricht dem Präfixinkrement.



  • Seikilos schrieb:

    Öhm ja, stimmt eigentlich, nun frag ich mich, wo der Witz hier sein soll...

    Naja:

    int foo(int& i){
    i = 0;
    return (i++);
    }
    

    Hierbei könnte es schon sinnvoll sein....

    Gruß,

    Simon2.


Anmelden zum Antworten