====== Πως καταλαβαίνω τα break/continue σε ποιό βρόχο αναφέρονται ====== Η χρήση της **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)__.