Wann ; hinter for Schleife?!
-
Heyo,
folgendes Beispiel verwirrt mich etwas...:
//13.13 char array 2 #include <stdio.h> #include <stdlib.h> char hello1[] = { "Hallo Welt" }; char output[] = { "Ich bin lesbar \0 Ich nicht mehr" }; char deznu[] = { "Mich siehst du 0 Mich und die Null auch" }; int main(void) { int i; printf("%c", output[0]); /* I */ printf("%c'", hello1[9]); /* t */ printf("%c ", deznu[5]); /* s */ printf("%c", hello1[7]); /* Gibt das Zeichen 'e' aus */ printf("%c", output[12]); /* a */ printf("%c", deznu[5]); /* s */ deznu[1] = 'y'; /* aus 'i' wird 'y' */ printf("%c\n", deznu[1]); /* y */ //Größe des Strings berechnen for (i=0; hello1[i] != '\0'; i++) printf ("Länge von '%s' = %d Zeichen\n", hello1, i); printf("\n"); for(i=0; hello1[i] != '\0'; i++); printf("Länge von '%s' = %d Zeichen\n", hello1, i); getchar(); return 0; }
Wieso muss man hinter das ; hinter die for-Schleife machen, damit man einfach das richtige Ergebnis angezeigt bekommt?
Wenn man das ; nicht setzt, zählt er das ganze einfach hintereinander auf... kommt aber nicht beim letzten Zeichen an...
Mich verwirrt das iwie... wie kommt man überhaupt auf die Idee mit dem ; ?
Greez
Haimi
-
hinter for muß nie eins.
außer, man will//mit dummy-funktion for(i=0; hello1[i] != '\0'; i++) tunix(); printf("Länge von '%s' = %d Zeichen\n", hello1, i);
oder
//mit leerem block for(i=0; hello1[i] != '\0'; i++) { } printf("Länge von '%s' = %d Zeichen\n", hello1, i);
oder
//mit leerer anweisung for(i=0; hello1[i] != '\0'; i++) ; printf("Länge von '%s' = %d Zeichen\n", hello1, i);
oder
//mit philosophie for(i=0; hello1[i] != '\0'; i++) 42; printf("Länge von '%s' = %d Zeichen\n", hello1, i);
verschleiern.
-
ahhh verstehe...
das heißt dann, dass nichts ausgeführt werden soll... also das es keinen anweisungsblock gibt..
vielen dank hat mir zum verständnis sehr geholfen...!