Instruction continue
C'est une instruction de branchement automatique que l'on utilise au sein d'une boucle.
Si on exécute l'instruction "continue" au sein d'une boucle "do" ou "while" alors la prochaine itération recommence au niveau de l'évaluation de l'expression de la condition d'arrêt.
i = 2;
do
{
i++;
if (i==5)
continue;
printf("\n i = %d",i);
} while (i<7);
Cet exemple affichera :
i = 3
i = 4
i = 6
i = 7
En effet, quand "i" vaut 5, le code exécute l'instruction "continue" qui "saute" le "printf" et va se brancher au niveau du test "while (i<7)" pour évaluer la condition d'arrêt.
#include <stdio.h>
int main(){
int i,j,x;
x = 1;
i = 5;
j = 0;
// Comme nous utilisons la post décrémentation « i - - », nous effectuons d'abord la comparaison i<0 puis
// la décrémentation i=i – 1.
while ( (i--) > 0 )
{
x += 1;
if ( x % 2 )
continue;
j += x * x;
}
printf("\nen sortie j = %d\n",j);
}
Cet exemple affichera en sortie
j = 56
La boucle s'effectue pour « i = 5,4,3,2,1 » et « x » vaut respectivement 2, 3, 4, 5, 6 avant le « if ( x % 2 ) ».
Si « x %2 vaut 0 » alors « x » est pair et on fait l'instruction « j += x * x; ».
Si la valeur de l'expression « x %2 » est différente de 0 (x est impair) alors le code exécute le « continue ».
L'instruction « j += x * x; » est « sautée » et on calcule « (i--) > 0 ».
Ce code C effectue la somme « 2*2+4*4+6*6 = 4+16+36=56 ».
Nous vous rappelons qu'une boucle for s'écrit comme un triplet for (partie1; partie2 ; partie3).
Si on exécute l'instruction "continue" au sein d'une boucle "for" alors toutes les instructions de la boucle qui suivent le "continue" sont "sautées", puis "partie3" du triplet est exécutée, puis "partie2", ce qui permet de déterminer si la boucle doit recommencer.
for (i=0; i<10;i++)
{
if ((i%3)==0) continue;
printf("\ni = %d ",i);
}
printf("\nsortie : ");
printf("\n\ti = %d ",i);
Ce morceau de code C affiche :
i = 1
i = 2
i = 4
i = 5
i = 7
i = 8
Sortie:
i = 10
La boucle for s'effectue pour « i = 0,1,2,3,4,5,6,7,8,9 ».
Si « i » est divisible par 3, c'est-à-dire que « (i%3)==0 », alors on effectue l'instruction « continue », ce qui va directement effectuer l'instruction « i++ » qui correspond à « partie3 », puis le test « i<10 » qui correspond à « partie2 » est effectué.
Cette boucle n'affiche pas les multiples de 3.