Inkrement ++i oder i++

N3WM4N

Mitglied
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]
 
K

kneitzel

Gast
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

Mitglied
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++;
Vielen Dank
 

mrBrown

Super-Moderator
Mitarbeiter
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 :p
 

Neue Themen


Oben