++i statt i++ in for-schleife



  • Hallo,

    lese gerade ein Buch über C++ und mir ist aufgefallen, dass der Autor in den forschleifen immer ++i statt i++ benutzt.

    for(int i=0; i<5; ++i) cout << i;
    

    Dies hat aber den selben Effekt wie:

    for(int i=0; i<5; i++) cout << i;
    

    Welche Methode ist nun die "Richtige"? Und warum ist die das?

    Gruß
    Royal





  • meiner meinung nach ist es bei diesem beispiel egal, ob man die ++i oder i++ sytax verwendet.

    man könnte das ganze auch noch anderes verfassen

    for(int i=0; i<5;)cout << i++;
    

    hier wird die variable i erst nach der ausgabe inkrementiert. -> 01234

    wenn man aber schreibt

    for(int i=0; i<5;)cout << ++i;
    

    ...wird die variable i vor der ausgabe inkrementiert -> 1234

    mfg



  • Hallo,

    danke für eure schnellen Antoworten. Habs jetzt begriffen.

    Gruß
    Royal



  • Hi,
    prinzipiell würde ich nur ++i verwenden, und das aus nur aus der Tatsache heraus, dass es tatsächlich schneller ist:

    Der Ausdruck i++ hat erstmal nur den Wert i, d.h. es wird zwischengespeichert, neuer Wert im Speicher angelegt, dann inkremiert, dann Wert wieder gelöscht usw.
    Es entsteht also ein deutlicher Mehraufwand, den man sich bei ++i erspart.

    Gruß,
    Neo



  • NeoInferno schrieb:

    prinzipiell würde ich nur ++i verwenden, und das aus nur aus der Tatsache heraus, dass es tatsächlich schneller ist:

    Der Ausdruck i++ hat erstmal nur den Wert i, d.h. es wird zwischengespeichert, neuer Wert im Speicher angelegt, dann inkremiert, dann Wert wieder gelöscht usw.
    Es entsteht also ein deutlicher Mehraufwand, den man sich bei ++i erspart.

    Das gilt aber nicht für built-in Typen. Da können Compiler schon vernünftig optimieren.



  • Leute, wozu gibts die Faq?


Log in to reply