Die verwendung des präfix/postfix-operant



  • moin moin

    mich würde mal interessieren warum viele C++ programmierer auf den präfix einer inkrementierung schwören? Bei einer schleife macht es doch keinen unterschied. Viele schwören aber auf die präfix (++count) inkrementierung, wenige auf die postfix (count++) inkrementierung.

    Wieso ist das so? Bei einer inkrementierung und anschliessender ausgabe des wertes, macht es ja durchaus sinn das man dort den präfix bevorzugt. z.B.

    int count = 0;
    cout << "count ist: " << ++count; 
    
    //ausgabe gleich 1. Hingegen wäre die ausgabe bei einer postfix inkrementierung durchaus 0 da ja der wert der variable zuerst ausgegeben wird und dann inkrementiert.
    

    aber bei einer schleife spielt es doch keine rolle oder nicht? bei einer zuweisung würde es wiederum durchaus sinn machen wenn man den präfix-operant nimmt, sofern man eine inkrementierung zuweisen möchte:

    int a = 0, b = 0;
    a = b++; //a wird 0 zugewiesen und b wird auf 1 inkrementiert
    
    int a = 0, b = 0;
    a = ++b; //b wird auf 1 inkrementiert und a wird dann auch 1 zugewiesen
    

    wie sieht as denn nun mit einer schleife aus? ich habe schon mehrfache diskussionen erlebt wo es darum ging was besser ist, ob ++count oder count++.





  • ich habs nur durchflogen aber grundsätzlich (auf schleifen ebzogen) geht es um die performance?



  • weil dann frag ich mich wozu es den postfix gibt? 🕶



  • Für komplexe Ausdrücke? Wobei - wie du Volkards Link entnehmen kannst - der Post-Inkrement-Operator nicht immer angeboten wird.

    Caipi



  • stefan kürti schrieb:

    weil dann frag ich mich wozu es den postfix gibt? 🕶

    int i=5;
    int f=i++;
    int g=++i;
    

    was wird wohl ausgegeben?

    bei nem integer machts zwar in zählschleifen nichts aus, welcher operator verwendet wird,aber bei eigenen typen die die operatoren überladen kann es schon sinnvoll sein, 2mal zu überlegen, welchen typ man nimmt.

    bei i++ wird halt zuerst i kopiert, und bei eigenen typen kann das doch schonmal langsamer sein.


Anmelden zum Antworten