Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

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

Moderationshinweis von herbivore (04.09.2013 - 07:33)

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?

Galoshi
myCSharp.de - Member



Dabei seit:
Beiträge: 1
Herkunft: Neu-Ulm

Themenstarter:

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

beantworten | zitieren | melden

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!
private Nachricht | Beiträge des Benutzers
Console32
myCSharp.de - Member



Dabei seit:
Beiträge: 258

beantworten | zitieren | melden


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.
private Nachricht | Beiträge des Benutzers
dN!3L
myCSharp.de - Experte

Avatar #avatar-2985.png


Dabei seit:
Beiträge: 2.891

beantworten | zitieren | melden

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);
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 6.779
Herkunft: Waidring

beantworten | zitieren | melden

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!"
private Nachricht | Beiträge des Benutzers