The continue
statement can only appear in a loop body. It does not operate on switch
. It causes the rest of the statement body in the loop to be skipped.
For while
and do-while
it causes transfer of program-control immediately to the conditional test, which is reevaluated for the next iteration. The same action occurs for a for-loop
after first executing the increment expression (i.e., expression 3). Note that, as with break
, continue
acts on the inner-most enclosing block of a nested loop.
//loop statements continue; //some lines of the code which is to be skipped
#include<stdio.h> void main () { int i = 0; while(i!=10) { printf("%d", i); continue; i++; } }
#includeint main(){ int i=1;//initializing a local variable //starting a loop from 1 to 10 for(i=1;i<=10;i++){ if(i==5){//if value of i is equal to 5, it will continue the loop continue; } printf("%d \n",i); }//end of for loop return 0; }
As you can see, 5 is not printed on the console because loop is continued at i==5.
In such case, C continue statement continues only inner loop, but not outer loop.
#includeint main(){ int i=1,j=1;//initializing a local variable for(i=1;i<=3;i++){ for(j=1;j<=3;j++){ if(i==2 && j==2){ continue;//will continue loop of j only } printf("%d %d\n",i,j); } }//end of for loop return 0; }
As you can see, 2 2 is not printed on the console because inner loop is continued at i==2 and j==2.
You cannot use break to jump out of an if compound statement. For example, given a nested construct of the form,
while (expression) { statements if (expression) { statements if (expression) break; statements } } statements after if statements after loop
In the above example the break
will not transfer control to the statements after if
, whereas it will actually transfer control to the statements after loop.