Bỏ qua để đến nội dung

break, continue, goto

break dừng vòng lặp ngay lập tức, bất kể điều kiện lặp còn đúng hay không:

#include <iostream>
int main() {
for (int i = 0; i < 10; i++) {
if (i == 5) {
break; // Thoát vòng lặp ngay khi i == 5
}
std::cout << i << " ";
}
// 0 1 2 3 4
return 0;
}

continue bỏ qua phần còn lại của lần lặp hiện tại và nhảy thẳng đến lần lặp tiếp theo:

#include <iostream>
int main() {
for (int i = 0; i < 10; i++) {
if (i % 2 == 0) {
continue; // Bỏ qua số chẵn
}
std::cout << i << " ";
}
// 1 3 5 7 9
return 0;
}

C++ (kế thừa từ C) có goto để nhảy trực tiếp đến một nhãn (label) trong code, chủ yếu dùng để thoát nhiều tầng vòng lặp lồng nhau:

#include <iostream>
int main() {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (i == 1 && j == 1) {
goto end; // Nhảy thẳng ra khỏi CẢ HAI vòng lặp
}
std::cout << i << "," << j << " ";
}
}
end:
std::cout << std::endl << "Da thoat" << std::endl;
return 0;
}

⚠️ goto khiến luồng chương trình khó theo dõi và dễ gây lỗi (code trở nên rối rắm - spaghetti code). Trong hầu hết trường hợp nên dùng biến cờ (flag), tách hàm riêng, hoặc ném ngoại lệ thay vì goto.

  • break dừng hẳn vòng lặp; continue chỉ bỏ qua lần lặp hiện tại rồi tiếp tục
  • Một khối lệnh trong C++ có thể để trống {} hoặc dùng dấu ; cho câu lệnh rỗng
  • goto tồn tại trong C++ nhưng nên tránh dùng trừ trường hợp đặc biệt (thoát nhiều tầng vòng lặp lồng nhau)