Laden...

for-Schleifen: Warum macht Postfix - oder Präfixinkrementierung der Laufvariable keinen Unterschied?

Erstellt von Galoshi vor 10 Jahren Letzter Beitrag vor 10 Jahren 1.889 Views
Hinweis von herbivore vor 10 Jahren

Jetzt ist echt mal der Titel zu kurz:

for-Schleifen: Warum macht Postfix - oder Präfixinkrementierung der Laufvariable im Schleifenkopf (Re-Initialisierung) keinen Unterschied für den Schleifenrumpf?

G
Galoshi Themenstarter:in
1 Beiträge seit 2013
vor 10 Jahren
for-Schleifen: Warum macht Postfix - oder Präfixinkrementierung der Laufvariable keinen Unterschied?

Hi liebe Community,

wir steigen in unserem Unternehmen gerade von SAX Basic auf C# um, worüber ich mich sehr gefreut habe, da C# so ähnlich wie Java ist.

Bei den for-Schleifen kenne ich wie bei Java das Postfix- und Präfixinkrement.
Um ins Programmieren wieder rein zu kommen, habe ich mit einem einfachen Code die Inkrementierungen ausprobieren wollen.

Mein Code:


// For - Schleife (Postfixinkrement)
            Console.WriteLine("Postfixinkrement:");
            int grenze = 5;
            for (int i = 0; i <= grenze; i++)
            {
                Console.Write(i + " ");
                
            }
            Console.WriteLine("");

// For - Schleife (Präfixinkrement)
            Console.WriteLine("Präfixinkrement:");
            Console.WriteLine("");
            for (int i = 0; i <= grenze; ++i)
            {
                Console.Write(i + " ");
            }

Beim Präfixinkrement war ich immer der Meinung, dass er den Wert von i um 1 erhöht, BEVOR er den Befehl Console.Write(i + " "); ausführt.
Könnt ihr mir vielleicht weiterhelfen? Ist es ein Fehler im Code oder ein Verständnisfehler meinerseits?

Im voraus schon mal besten Dank an alle Helfer! 👍

C
258 Beiträge seit 2011
vor 10 Jahren

int i = 0;
while(i < 5)
    Console.WriteLine(++i);

Bei deinem Code ist i zum Zeitpunkt des schreibens schon erhöht egal ob post oder pre, das ändert in diesem teil der for Schleife nichts.

2.891 Beiträge seit 2004
vor 10 Jahren

Naja, die Semantik vom Prä-/Postinkrement ist schon ein wenig anders, als du dir das vorstellst. Siehe auch Operator ++ (C#-Referenz).
Der Unterschied zwischen Prä und Post kommt nur zum Tragen, wenn du die Variable gleichzeitig auch ausliest. Das tust du in deinem Beispiel aber nicht. Wo es einen Unterschied macht:


int i = 0;
Console.WriteLine(i++);

vs.


int i = 0;
Console.WriteLine(++i);

6.911 Beiträge seit 2009
vor 10 Jahren

Hallo Galoshi,

schau mal: Postfix oder Prefix Schreibweise um eine Variable zu inkrementieren?
Dort wurde das Thema ausführlicher behandelt.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"