Часто необходимо досрочно завершить цикл. С этой задачей успешно справляется оператор break.
Он прерывает ближайший оператор while, do while, for или switch. Выполнение будет возобновлено с оператора, следующего за завершаемым оператором.
break может располагаться только в цикле или операторе switch (включая операторы и блоки, вложенные в эти циклы). Оператор break воздействует только на ближайший цикл или оператор switch.
#include <iostream>
using namespace std;
int main()
{ 
 setlocale(LC_ALL, "Russian"); 
 int i = 0;
 char ch;
 while (cin >> ch) {
 switch (ch) {
 case 'a': 
 cout << "input a" << endl;
 break; // #1 выйти из switch
 
 case 'b':
 for (int i = 0; i < 10; i++) {
 if (i == 5) {
 cout << "input b " << i << endl;
 break; // #2 выйти из цикла for
 }
 }
 break; //если закомментировать этот break, при вводе "b"
 //будет выполняться метка default поскольку 
 //break #2 не относится к case 'b'
 
 // break #2 передает управление сюда
 default: 
 cout << "input " << ch << endl;
 break;
 }
 // break #1 передает управление сюда
 }
 return 0;
}
Оператор continue прерывает текущую итерацию ближайшего цикла и немедленно начинает следующую.
Оператор continue может присутствовать только в циклах while, do while, for, включая операторы и блоки, вложенные в такие циклы. В отличие от break, continue может присутствовать в операторе switch, только если он встроен в итерационный оператор.
#include <iostream>
using namespace std;
int main()
{ 
 setlocale(LC_ALL, "Russian"); 
 for (int i = -5; i <= 5; i++) {
 if (i == 0) {
 cout << "Деление на 0!" << endl;
 continue;
 }
 cout << i*i / i << endl;
 }
}
Оператор goto обеспечивает безусловный переход к другому оператору в той же функции. Для этого используются метки.
Предыдущий пример для continue можно переписать без цикла for, используя goto.
#include <iostream>
using namespace std;
int main()
{ 
 setlocale(LC_ALL, "Russian"); 
 int i = -5;
 begin: //метка begin
 if (i == 0) {
 cout << "Деление на 0!" << endl;
 i++;
 goto begin; //перейти к метке
 }
 else if (i <= 5) {
 cout << i*i / i << endl;
 i++;
 goto begin; //перейти к метке
 }
 else 
 cout << "Расчет окончен" << endl;
}
Использовать оператор goto не рекомендуется. Он затрудняет понимание программ.





