kurze anfängerfrage zu for-schleifen
-
for (i=0;i<20;i++) //Strings werden auf Null gesetzt nachname[i]='\0'; i=0;
das ist ein teil eines quelltextes,
ich habe nur folgende frage,
wird erst jeder character von nachname auf o gesetz und nachdem alle auf null gesetz wurden wird i wieder 0 gesetzt?
oder wird der erste character null gesetzt und dann i wieder auf 0 um dann den zweiten character auf null zu setzten und dann i.
rein vom logischen muss es doch variante eins sein?? sonst würde doch das ganze nie aufhören, weil i um eins erhöht wird und dann wieder auf null, um eins erhöht wird, dann wieder auf null
-
Bei deinem Beispiel sollte es Variante 1 sein, genauso bei
for (i=0;i<20;i++) { nachname[i]='\0'; } i=0;
Bei
for (i=0;i<20;i++) { nachname[i]='\0'; i=0; }
Hättest du aber eine Endlosschleife. Das ist zwar unlogisch, aber das interessiert den Compiler ja nicht (zumindest der gcc sollte aber eine Warnung ausgeben)
Auf die geschweiften Klammern verzichte ich eigentlich nur bei if-Verzweigungen mit einer anschließenden Anweisung.
-
stoeoe schrieb:
oder wird der erste character null gesetzt und dann i wieder auf 0 um dann den zweiten character auf null zu setzten und dann i.
Der Fall würde ja, wie du erkannt hast nie eintreten, dass i immer zwischen 0 und 1 alternieren würde. Aber abgesehen davon ist es stilistisch besser, wenn man Blöcke mit geschweiften Klammern verwendet. Das erhöht die Lesbarkeit und verhindert Fehlinterpretationen
-
for (i=0;i<20;nachname[i++]='\0'); i=0;
^^
-
stoeoe schrieb:
for (i=0;i<20;i++) //Strings werden auf Null gesetzt nachname[i]='\0'; i=0;
Es werden 20 Stellen deines Arrays "nachname[]" mit einem Null-Byte belegt. Dann erst wird i wieder auf Null gesetzt.
Mit geschweiften Klammern sieht deine Schleife dann so aus:for (i=0;i<20;i++){ //Strings werden auf Null gesetzt nachname[i]='\0'; } i=0;