Die continue-Anweisung
Die continue-Anweisung ist die kleine Schwester von break. Sie beendet nicht die ganze Schleife, sondern nur den aktuellen Durchlauf: Sie überspringt den Rest des Blocks, und die Schleife geht direkt zum nächsten Durchlauf.
Diese Schleife gibt die Zahlen von 1 bis 10 aus, überspringt aber die Vielfachen von 3:
for (int zahl = 1; zahl <= 10; zahl++) {
if (zahl % 3 == 0) {
continue;
}
printf("%d\n", zahl);
}Das gibt Folgendes aus:
1
2
4
5
7
8
10Bei 3, 6 und 9 ist die Bedingung wahr, und continue überspringt die Zeile, die ausgibt. Der Schritt zahl++ wird trotzdem ausgeführt, und die Schleife macht wie gewohnt mit der nächsten Zahl weiter.
Die continue-Anweisung steht meistens am Anfang des Blocks und filtert die Werte heraus, mit denen du dich nicht beschäftigen willst: „Diese hier interessiert mich nicht, weiter zur nächsten.“ Der Rest des Blocks kümmert sich dann nur um die interessanten, und du musst ihn nicht ganz in eine if-Anweisung packen.
Sei vorsichtig mit continue in einer while-Schleife. Es springt direkt zurück zur Bedingung, und wenn die Zeile, die den Zähler erhöht, unter continue steht, wird sie ebenfalls übersprungen. Der Zähler ändert sich nicht mehr, und du hast eine Endlosschleife. In einer for-Schleife kann das nicht passieren: Ihr Schritt wird nach jedem Durchlauf ausgeführt, auch nach einem, der mit continue endete.
So schreibst du es:
Anweisungen
- 1
Die Schleife gibt die ersten 14 Tage eines Monats aus, der an einem Montag beginnt, aber du willst nur die Arbeitstage. Schreibe am Anfang des Schleifenblocks eine
if-Anweisung, die den Tag mitcontinueüberspringt, wenn er ein Samstag oder ein Sonntag ist. Samstage sind die Tage mittag % 7 == 6, Sonntage die Tage mittag % 7 == 0. Das Programm gibt dannTag 1bisTag 5undTag 8bisTag 12aus. - 2
Zähle die Arbeitstage. Erstelle vor der Schleife eine Variable
arbeitstagemit dem Wert0. Erhöhe sie in der Schleife unter derif-Anweisung mitcontinueum 1. Gib nach der SchleifeArbeitstage: 10aus.