Η χρήση της continue αφορά μόνο τις εντολές που είναι βρόχοι, δηλαδή for
, while
και do/while
.
Ενώ η χρήση της break αφορά επιπλέον και την switch/case/default
.
Προφανώς, οι εντολές continue
και break
βρίσκονται πάντα μέσα σε κάποιο if
ή switch
ώστε να μην εκτελούνται σε κάθε περίπτωση, αλλά μόνο όταν “συμφέρει” τον κώδικά μας.
Επίσης, οι εντολές continue
και break
, όπως όλες οι εντολές στη C, βρίσκοντα πάντα μέσα σε ένα ή περισσότερα ζευγάρια άγκιστρα. Δηλαδή της συνάρτησης, αλλά και άγκριστρα από if, for, while, κλπ.
Ο κανόνας είναι ότι οι continue
και break
εφαρμόζονται/διακόπτουν την κοντινότερη εντολή από αυτές που αφορούν και ταυτόχρονα βρίσκονται μέσα στα άγκιστρά της.
Για να δούμε αυτόν τον κανόνα εφαρμοσμένο και σε ένα παράδειγμά, θα χρησιμοποιήσουμε τον ακόλουθο αποσπασματικό κώδικα:
void test() { ... for (int i = 0; i < 100; ++i) { // FOR #1 int x, y; while (...) { // WHILE #1 ... } if (x>i) { break; // ή και continue -- ΘΕΣΗ 1 } while (...) { // WHILE #2 ... if (y>i) { break; // ή και continue -- ΘΕΣΗ 2 } ... switch(i+x+y) { // SWITCH #1 case 1: ... return; case 2: ... break; // ΘΕΣΗ 3α case 3: ... continue; // ΘΕΣΗ 3β ... } } } ... }
Σε αυτόν η break
στη θέση #1 βρίσκεται μόνο μέσα στα άγκιστρα
test
,for
(for#1) καιif
.
Από αυτές η break
, αφορά μόνο την for
. Οπότε η break
στη θέση #1 - εφόσον εκτελεστεί - διακόπτει την εκτέλεση της for
(for#1).
Η επόμενη break
(στη θέση #2) βρίσκεται μόνο μέσα στα άγκιστρα
test
,for
(for#1),while
(while#2) καιif
.
Από αυτές η break
αφορά μόνο τις for
(for#1) και while
(while#2). Όμως η πιο κοντινή είναι η while
(while#2). Άλλωστε αυτή η while
με τη σειρά της βρίσκεται μέσα στα άγκιστρα της for
(for#1). Άρα η break
(στη θέση #2) διακόπτει την εκτέλεση του βρόχου while
(while#2).
Τέλος, οι break
και continue
στις θέσεις #3α και #3β, βρίσκονται μέσα στα άγκιστρα
test
,for
(for#1),while
(while#2) καιswitch
Από αυτές η break
αφορά τις for
, while
και switch
και κοντινότερη είναι η switch
, άρα η break
της θέσης #3α διακόπτει την εκτέλεση της switch
.
Από την άλλη η continue
αφορά μόνο τις for
και while
και κοντινότερη είναι η while
, άρα η continue
της θέσης #3β διακόπτει την εκτέλεση της τρέχουσας επανάληψης της while
(while#2).