Unterschied zwischen ++i und i++



  • Moin!

    Ja ich weiß, es gibt einen FAQ-Eintrag aber dort steht nicht das was ich suche / bzw. ich finde es nicht weil er zu unsortiert und unübersichtlich ist.

    Die Frage war warum ist ++i schneller, ich habe eben schon gesucht aber auf die schnelle nichts gefunden (muss gleich Arbeiten), ich meine mal gelesen zu haben das bei

    ++i

    einfach i incrementiert wird, also i+=1; und bei i++ wird eine neue Variable erstellt, i zugewiesen, diese Variable wird dann incrementiert und wieder an i zugewiesen, also sowas:

    int tmp = i;
    tmp+=1;
    i = tmp,

    stimmt das oder war der Grund ein anderer?



  • Hallo,

    also ich kenne das so das i++ an der stelle i anzeikt und i+=1 macht und ++i macht zuerst i+=1 und zeikt jetzt den inhalt an.

    MFG TaccoGo



  • Morgen,

    bei ++i wird i einfach incrementiert und der neue Wert zurueckgegeben. Bei i++
    wird ein temporaeres Objekt mit i erzeugt, i incrementiert und der temporaere
    Wert zurueckgegeben.

    Aufgrund dessen, dass ein temporaeres Objekt erzeugt wird, ist i++ "langsamer".

    Diesen Grund kann man aber aus dem FAQ-Beitrag rauslesen.

    mfg
    v R



  • wieso heist dann eigentlich C++ C++ und nicht ++C ?
    ++C ist doch schneller = besser 🤡



  • ja die sprache C um 1 erhöt 😃



  • DEvent schrieb:

    wieso heist dann eigentlich C++ C++ und nicht ++C ?
    ++C ist doch schneller = besser 🤡

    Nee, C ist built-in und somit macht das keinen Unterschied. 😃



  • Wird bei i++ der Rückgabewert nicht genutzt (z.B. im Kopf einer for-Schleife), so optimiert der Compiler das in der Regel immer weg. Man kann also nicht grundsätzlich behaupten, dass ++i schneller als i++ ist. Zumindest bei trivialen Datentypen.



  • --> FAQ <--

    da is ein ganzer artikel darüber !!!



  • wobei man aber nie vergessen sollte das es für den algorithmus ja auch eine rolle spielt. in einer schleife kann das auch zu falschen 'berechnungen' führen. aber das nur am rande. man kann ja auch vernünftig planen.


Anmelden zum Antworten