Der Martin: Zähler in Schleifen hochzählen

Beitrag lesen

Hallo,

ich stoße immer wieder auf Schleifen in denen ein Zähler hochgezählt wird.
Manchmal passiert das mit i++ und manchmal mit ++i.
Wo liegt der Unterschied (hoffe es gibt einen der nicht sprachenabhängig ist).

solange das Erhöhen der Zählvariablen die einzige Operation ist, besteht kein Unterschied.

Technisch korrekt nennt sich das eine Pre-Increment (++i) oder Prefix-Operator, das andere Post-Increment (i++) oder Postfix-Operator.
Der Unterschied zeigt sich erst, wenn das Erhöhen Teil eines komplexeren Ausdrucks ist.
Ein ganz einfaches Beispiel.

Pre-Increment:

var i=0;  
var e = ++i;

Beim Pre-Increment wird *zuerst* der Variablenwert erhöht und *dann* für die weitere Verarbeitung ausgelesen. Im vorigen Beispiel hätte e nach diesen beiden Zeilen den Wert 1, denn der Wert von i wurde erst erhöht, dann an e zugewiesen.

Post-Increment:

var i=0;  
var e = i++;

Beim Pre-Increment wird dagegen *zuerst* der Variablenwert gelesen und für den umgebenden Ausdruck verwendet, *dann* erst erhöht und zurückgeschrieben. Hier hätte e nach diesen beiden Zeilen den Wert 0, denn der Wert von i wurde erst ausgelesen und zugewiesen, dann erhöht.

Alle Klarheiten beseitigt? ;-)

Ciao,
 Martin

--
Das einzige Problem beim Nichtstun: Man weiß nie, wann man damit fertig ist.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(