Was bedeutet das i++ in diesem Programm?

...komplette Frage anzeigen

5 Antworten

#include <stdio.h>
main() {

.

int i=0;

Hier wird die Variable "i" deklariert und mit "0" initialisiert.

char text[100];
printf("\nBitte einen Satz eintragen.\n");
gets(text);

Hier wird ein Text (von der Tastatur) in die Variable "text" eingelesen.

while(text[i]) {

Hier wird es das erste Mal spannend: Eine "while"-Schleife (= "solange ...") prüft Zeichen für Zeichen an der Position "i" in der Variablen "text". Also: text[0], text[1], text[2], usw.

Damit das klappt und nicht andauernd text[0], text[0], text[0] - und damit eine Endlosschleife - gelesen wird, muss "i" aber irgendwie weiterkommen...

if(text[i] != '  ')
printf("%c",text[i]);
else
printf("\n");

Hier passiert Folgendes: Die Variable "text" wird an der Position "i" auf Leerzeichen geprüft. Damit wird die einfachste Form der Worterkennung (= "nach jedem Wort kommt ein Leerzeichen") angewendet. Findet er ein Leerzeichen, wird ein Zeilenumbruch gedruckt; findet er kein Leerzeichen, wird das Zeichen an der Stelle text[i] gedruckt.

i++;

Ganz am Ende der Schleife wird die Variable "i" nun um 1 hochgezählt, bevor der nächste Durchlauf beginnt und der Text beim nächsten Zeichen geprüft werden kann.

Das Äquivalent dazu lautet

i = i + 1 oder in der ersten Verkürzung i += 1.

Alle drei Schreibweisen sind technisch exakt gleich und werden vom Compiler in völlig identischen Code umgewandelt. Folglich kannst du die nehmen, die dir mehr liegt - und die später besser lesbar sein wird.

ich kenns normal nur in ner forschleife um die steigerung z.b. also i=i+1 anzugeben ?!

Richtig. Diese Schleife macht im Grunde nichts anderes. (Sie ist nur eine komplexere und für diese Aufgabe eigentlich die falsche Wahl.)

Darüber hinaus kann (und muss) man aber gelegentlich an mehr Stellen als nur in for-Schleifen irgendwas zählen oder inkrementierten/dekrementieren. Auch dann bewährt sich dieses Konstrukt - ganz gleich, ob in der langen oder der kurzen Schreibweise - immer wieder aufs Neue. ;)

Nimm den Wert, der in i steht, erhöhe ihn um 1 und schreibe das Ergebnis zurück nach i.

Richtig, es erhöht i um 1. Ob das nun in einer Schleife steht oder einzeln spielt keine Rolle. Du kannst auch in einer for-Schleife den Ausdruck i=i+1; nutzen wenn du lustig bist. :-)

Eine weitere alternative Möglichkeit wäre übrigens i+=1;

Des heißt das iein Wert nach jdem durchgang um 1 erhöht wird, denk ich...

i ist eine typische Zählvariable. ++ ist der Befehl increment, also um eines erhöhen. I++ ist das gleiche wie i = i + 1;

Nachtrag: i-- nennt sich decrement und verringert um eines.

Also hat ich auch iwie recht oder ? :D

0

Was möchtest Du wissen?