Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

17.08.2011, 23:29

Verständnisfrage for Schleife

Nabend,

Habe eine Verständnissfrage zur for schleife und zwar zum Aktionsteil i++.

C-/C++-Quelltext

1
for (int i=0; i<RundenAnzahl; i++)


Was bezweckt das i++ oder i-- genau wenn ich mir das listing 3.6 anschaue kann ich mir daraus keinen schluss ziehen, im weiteren verlauf wird ja die zähler variable der for schleife "i" i+1 genommen da ja bei Runde 1 und nicht bei 0 begonnen wird.

gruß mario

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

2

17.08.2011, 23:32

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
int i = 0;
// Post-Inkrementation
std::cout << i++; //gibt 0 aus
std::cout << i; //Nun ist i auf 1.

// Pre-Inkrementation
int j = 0;
std::cout << ++j; //gibt 1 aus
std::cout << j; // gibt 1 aus


Das ganze nennt man inkrementieren. Es erhöht (oder erniedrigt) den Wert einer Variable.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

3

17.08.2011, 23:50

i++ macht das gleiche wie i = i+1;

i-- ist das selbe wie i = i-1;

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

4

18.08.2011, 07:38

i++ macht das gleiche wie i = i+1;

i-- ist das selbe wie i = i-1;

Nein. Als einzelne Anweisung vielleicht, ja. Aber nicht im Kontext eines größeren Ausdrucks.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

5

18.08.2011, 08:04

i++ macht das gleiche wie i = i+1;

i-- ist das selbe wie i = i-1;

Nein. Als einzelne Anweisung vielleicht, ja. Aber nicht im Kontext eines größeren Ausdrucks.
In dem gefragten Kontext aber schon ;) Ansonsten erklär es vernünftig an statt nur zu meckern, dass es falsch ist.

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

6

18.08.2011, 13:20

C-/C++-Quelltext

1
cout << i++;

macht das gleiche wie

C-/C++-Quelltext

1
2
3
int tmpi = i;
i = i+1;
cout << tmpi;

Es wird eine temporäre Variable erstellt damit sie ausgegeben werden kann, nachdem i um eins erhöht wurde. Das macht aber nur selten sinn.
und

C-/C++-Quelltext

1
cout << ++i;

macht das gleiche wie

C-/C++-Quelltext

1
cout << i = i+1;


i++ macht also selten das, was Anfänger und manchmal auch erfahrenere Programmierer davon erwarten. newby hat uns ja demonstriert. :thumbsup: Du solltest also ++i bevorzugen und i++ nur verwenden, wenn du es brauchst.

Den Aktionsteil kannst du dir als letzte Zeile deiner Schleife vorstellen. Stattdessen könnte man es auch so schreiben:

C-/C++-Quelltext

1
2
3
4
5
6
for (int i=0; i<RundenAnzahl;)
{
    // machwas

    i++; // immer die letzte Zeile. hier könnte natürlich auch ++i; stehen, wenn du meinen Tipp befolgst^^
}
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »NachoMan« (18.08.2011, 13:28)


7

18.08.2011, 14:17

ich dachte, das was ich geschrieben habe würde für einen anfänger reichen ;)
++i ist übrigens in den meisten schleifen minimal performanter als i++

rnlf

Frischling

Beiträge: 85

Beruf: Softwareingenieur Raumfahrt

  • Private Nachricht senden

8

18.08.2011, 14:31

Der Compiler macht eh aus beidem das Gleiche, wenn es zulässig ist (sprich der Wert von i im Gesamtausdruck nicht mehr benutzt wird). Zumindest ab niedrigen Optimierungsstufen... Also ist kaum ein Performancegewinn zu erwarten...

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

9

18.08.2011, 19:07

ich dachte, das was ich geschrieben habe würde für einen anfänger reichen ;)
++i ist übrigens in den meisten schleifen minimal performanter als i++

Wann stirbt dieser Mythos eigentlich mal? :rolleyes:
Wichtiger ist ohnehin der Inhalt der Schleife und nicht der Counter.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

10

18.08.2011, 20:58

Ja Danke, hat nun endlich klick gemacht :)

Werbeanzeige