# Inkrement ++i oder i++



## N3WM4N (16. Sep 2021)

Hallo zusammen. Ich habe immer noch ein paar Verständnisprobleme bezüglich ++i und i++.
Im Internet findet man immer nur, dass i++ nicht direkt erhöht wird.

Ich habe dazu mal ganz simpel ein Beispiel erstellt. Es wird mit alert(a) 30 ausgegeben.
Wenn ich allerdings a=ausgabe++ mache wird die 30 ausgegeben.
Meine Frage ist wozu man ausgabe ++ überhaupt braucht. Man kann doch einfach a=ausgabe machen und es
wird ebenfalls 30 ausgegeben. Dann habe ich noch eine weitere Frage zu Schleifen.
Wieso macht es keinen Unterschied wenn ich i++ oder ++i in die Schleife schreibe?

[CODE lang="java" title="Beispiel 1"]<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta charset="UTF-8" />
        <title>Internes JS</title>

        <script type="text/javascript">//<![CDATA[
        "use strict"
        var i, ausgabe, a
        for (i=0; i<=6; ++i)
        {
        ausgabe=5*i
        a=++ausgabe

        }
        alert(a)
        //]]></script>
    </head>

    <body>

    </body>
</html>[/CODE]


----------



## kneitzel (16. Sep 2021)

Der Post/Pre Increment erhöht ja auch die Variable!

a=ausgabe++;

entspricht:

a=ausgabe;
ausgabe = ausgabe + 1;

Bei dem pre-Increment wird erst erhöht und dann der Wert verwendet:

a=++ausgabe;

entspricht:

ausgabe = ausgabe + 1;
a=ausgabe;

Und bei dem Thema auch gleich ein Tipp:
Ich würde generell dazu raten, dass man versucht pro Zeile nur eine Aktion zu haben und dies nicht zu überladen. Das sind dann zwar schöne Aufgaben um das Verständnis zu prüfen, aber Aufgaben / Code wie:
a = 5;
b = 7 * (++a) - 8 * (a--);
==> Was für Werte haben a und b?
taugen nichts in wirklichem Code.

Der pre oder postfix Increment ist in meinen Augen in erster Linie nur gut, um ausgabe = ausgabe + 1; abzukürzen.

Sprich: Code würde bei mir immer so geschrieben:
a = ausgabe;
ausgabe++;


----------



## N3WM4N (16. Sep 2021)

kneitzel hat gesagt.:


> Der Post/Pre Increment erhöht ja auch die Variable!
> 
> a=ausgabe++;
> 
> ...


Vielen Dank


----------



## mrBrown (16. Sep 2021)

Nur so am Rande: in ungefähr 99,99% alle Fälle solltest du es nur als allein stehendes Statement und nicht als Expression verwenden und die Rückgabewert ignorieren (und dann ist auch egal, ob pre- oder post-Inkrement) – so wie moderne Sprachen das auch erzwingen.

Die restlichen 0,01% sind entweder Code-Gold oder Obfuscation oder aber ein Grund dich dann zu Feuern


----------



## EinNickname9 (16. Sep 2021)

N3WM4N hat gesagt.:


> for (i=0; i<=6; ++i)


An der Stelle macht es überhaupt keinen Unterschied, ob du `++i` oder `i++` schreibst. Die Semantik zu kennen wäre natürlich dennoch nicht verkehrt.


----------



## M.L. (20. Sep 2021)

Da man es auch mit JavaScript zu tun hat: YT, thenativeweb, "JavaScript - nichts ist wie es so scheint"  (spez. die Ausführungen am Anfang)


----------

