Ausgabe eines Char-Arrays in einer for-Schleife - Ablauf
-
out schrieb:
Verabschiede dich von dem Wort bis. Eine Schleife läuft solange die Bedingung true ist, in diesem Fall also solange i kleiner als 20 ist.
Hey,
vielen Dank für deine Antwort. Das weiß ich bereits, meine Frage bezog sich allerdings auf den Grund, wieso die Schleife solange läuft, bis i = 20 wird, wenn das Wort, das im char-array gespeichert ist, aus weniger als 20 Zeichen besteht. Müsste i nicht solange erhöht werden, bis es so groß ist, wie das Wort Zeichen hat ?
-
kleeman schrieb:
out schrieb:
Verabschiede dich von dem Wort bis. Eine Schleife läuft solange die Bedingung true ist, in diesem Fall also solange i kleiner als 20 ist.
Hey,
vielen Dank für deine Antwort. Das weiß ich bereits, meine Frage bezog sich allerdings auf den Grund, wieso die Schleife solange läuft, bis i = 20 wird, wenn das Wort, das im char-array gespeichert ist, aus weniger als 20 Zeichen besteht. Müsste i nicht
Ein for-Schleifen Durchgang besteht aus 3 Teilen.
1. Bedingung prüfen.
2. Schleifenrumpf ausführen
3. Irgendwas, das nach Vollendung des Schleifenrumpfs gemacht werden soll, in dem Fall i++.Am Anfang des letzen Schleifendurchgangs ist i=19, am Ende dieses Schleifendurchgangs ist i=20, verstehst du

-
Du kannst die for Schleife also theoretisch auch so schreiben:
for(int i = 0; i<20; /* Hier der Teil der am Ende jedes Schleifendurchgangs stattfindet*/) { cout << wort3[i] i++; }Nur macht man das eigentlich nicht, weil leicht Fehler passieren wenn man die Bedigungsvariable im Rumpf manipuliert.
-
out schrieb:
kleeman schrieb:
out schrieb:
Verabschiede dich von dem Wort bis. Eine Schleife läuft solange die Bedingung true ist, in diesem Fall also solange i kleiner als 20 ist.
Hey,
vielen Dank für deine Antwort. Das weiß ich bereits, meine Frage bezog sich allerdings auf den Grund, wieso die Schleife solange läuft, bis i = 20 wird, wenn das Wort, das im char-array gespeichert ist, aus weniger als 20 Zeichen besteht. Müsste i nicht
Ein for-Schleifen Durchgang besteht aus 3 Teilen.
1. Bedingung prüfen.
2. Schleifenrumpf ausführen
3. Irgendwas, das nach Vollendung des Schleifenrumpfs gemacht werden soll, in dem Fall i++.Am Anfang des letzen Schleifendurchgangs ist i=19, am Ende dieses Schleifendurchgangs ist i=20, verstehst du

Vielen Dank für deine Rückmeldung, aber meine eigentliche Frage war wieso denn i bis 20 erhöht wird, wenn der char Array nicht 20 Zeichen hat. Müsste i nicht solange erhöht werden, wie der Array Zeichen hat und diese dann ausgeben ? 20 ist doch zuviel.
-
kleeman schrieb:
Das weiß ich bereits, meine Frage bezog sich allerdings auf den Grund, wieso die Schleife solange läuft, bis i = 20 wird
Weil derjenige, der das Programm eingetippt hat, es dem Computer befohlen hat.
-
Naja die Schleife und das Array sind ja unabhängig von einander. Der Zugriff auf das Array findet nur statt, wenn i<20 ist. Deswegen kann i ja trotzdem bis zur Unendlichkeit hochgezählt werden, solang kein Arrayzugriff mehr stattfindet.
Und außerdem muss i irgendwann 20 werden, sonst würde die Bedingung nie false werden, dann liefe dein Programm auch bis zur Unendlichkeit
-
TGGC schrieb:
kleeman schrieb:
Das weiß ich bereits, meine Frage bezog sich allerdings auf den Grund, wieso die Schleife solange läuft, bis i = 20 wird
Weil derjenige, der das Programm eingetippt hat, es dem Computer befohlen hat.
Hey,
vielen Dank. Das Beispiel ist aus einem Buch deswegen frage ich.
Danke.
-
kleeman schrieb:
Warum läuft die Schleife bis i = 20 wird, wenn char wort3 aus weniger als 20 Zeichen besteht ? Müsste i nicht solange erhöht werden, wie das Wort Zeichen hat?
Welchen Sinn hat diese Schleife, ich verstehe die Funktion nicht ganz.
Nun, du hast natürlich Recht, die Schleife sollte abbrechen, wenn das Wort zu Ende ist.
Wer auch immer die Funktion geschrieben hat, hat da wohl etwas nicht richtig gemacht.
-
out schrieb:
Naja die Schleife und das Array sind ja unabhängig von einander. Der Zugriff auf das Array findet nur statt, wenn i<20 ist. Deswegen kann i ja trotzdem bis zur Unendlichkeit hochgezählt werden, solang kein Arrayzugriff mehr stattfindet.
Und außerdem muss i irgendwann 20 werden, sonst würde die Bedingung nie false werden, dann liefe dein Programm auch bis zur Unendlichkeit
Vielen Dank für deine Hilfe! Mir ist es jetzt klarer.
-
Nathan schrieb:
kleeman schrieb:
Warum läuft die Schleife bis i = 20 wird, wenn char wort3 aus weniger als 20 Zeichen besteht ? Müsste i nicht solange erhöht werden, wie das Wort Zeichen hat?
Welchen Sinn hat diese Schleife, ich verstehe die Funktion nicht ganz.
Nun, du hast natürlich Recht, die Schleife sollte abbrechen, wenn das Wort zu Ende ist.
Wer auch immer die Funktion geschrieben hat, hat da wohl etwas nicht richtig gemacht.Hey,
vielen Dank für deine Rückmeldung! Das ist das, was mich verwirrt. Aber die Textausgabe ist trotzdem richtig, also hätte man wahrscheinlich auch die selbe Textausgabe, wenn man die Anzahl der Wörter als Begrenzung genommen hätte. Der Sinn ist ja nur Zugriff auf die Variable zu kriegen.
-
Das liegt daran, dass der Rest des Arrays wohl zufälligerweise 0-Bytes sind, die keinerlei Ausgabe bewirken.
Edit: Wenn man das Array auch garantiert Null-terminiert, kann man es auch direkt ausgeben, ohne Schleife.
Außerdem kann man auch std::string in Betracht ziehen.
-
Nathan schrieb:
Das liegt daran, dass der Rest des Arrays wohl zufälligerweise 0-Bytes sind, die keinerlei Ausgabe bewirken.
Edit: Wenn man das Array auch garantiert Null-terminiert, kann man es auch direkt ausgeben, ohne Schleife.
Außerdem kann man auch std::string in Betracht ziehen.Danke für deine Hilfe.