continue Anweisung

Die continue-Anweisung bewirkt einen sofortigen Sprung zum Anfang der aktuellen for-, while- oder do-while-Schleife. Die Bedingung wird neu ausgewertet und die Schleife gegebenfalls neu gestartet. Bei der for-Schleife wird vor der Prüfung der Bedingung die Schritt-Anweisung ausgeführt.








number is 1.
number is 3.





number is 1.
number is 3.





number is 1.
number is 3.

Finished.
#include <stdio.h>

int main(){
  int i;
  
  for(i = 1; i <= 3; ++i){
    if(i == 2){continue;}
    printf("number is %d.\n", i);
  }
  
  i = 0;
  while(i < 3){
    ++i;
    if(i == 2){continue;}
    printf("number is %d.\n", i);
  }

  i = 0;
  do {
    ++i;
    if(i == 2){continue;}
    printf("number is %d.\n", i);
  } while(i < 3);
  
  printf("Finished.\n");
  return 0;
}

Details

Die continue-Anweisung ist nur innerhalb von Schleifen erlaubt. Bei jeder for-, while- oder do-while-Schleife fügt der Compiler an der entsprechenden Stelle der Struktur ein künstliches Label ein, zu dem wie bei der goto-Anweisung einfach gesprungen wird.

Bei der for-Schleife springt continue zu dem Punkt, wo die Schritt-Anweisung ausgeführt wird. Danach wird die Bedingung geprüft und gegebenfalls die Schleife neu gestartet.

Bei der while- und bei der do-while-Schleife springt continue direkt dahin, wo die Bedingung geprüft und gegebenfalls die Schleife neu gestartet wird.

Eine continue-Anweisung springt immer innerhalb der aktuellen, also innersten Schleife:







x=0 y=0
x=2 y=0
x=0 y=1
x=2 y=1
x=0 y=2
x=2 y=2
Finished.
#include <stdio.h>

int main(){
  int x, y;
  for(y = 0; y < 3; ++y){
    for(x = 0; x < 3; ++x){
      if(x == 1){continue;}
      printf("x=%d y=%d\n", x, y);
    }
  }
  printf("Finished.\n");
  return 0;
}

Vorsicht ist auch geboten, wenn innerhalb einer Schleife Speicher alloziiert wird. Durch eine continue-Anweisung kann es passieren, dass vergessen geht, den Speicher wieder freizugeben, sodass manchmal Speicher doppelt alloziiert wird.