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:(