Trong ngôn ngữ lập trình C, thường có nhiều tình huống yêu cầu kiểm tra và thực hiện các hành động khác nhau dựa trên giá trị của một biến. Để giải quyết các trường hợp này, lập trình viên có thể sử dụng lệnh switch
, một công cụ mạnh mẽ và linh hoạt hơn so với cấu trúc if-else
khi phải xử lý nhiều nhánh chọn lựa.
Cách thức hoạt động của lệnh switch
Lệnh switch
kiểm tra giá trị của một biến hoặc một biểu thức và so sánh nó với các giá trị cụ thể (gọi là "case labels"). Nếu tìm thấy một khớp, nó sẽ thực hiện tập hợp các câu lệnh liên quan đến nhãn đó. Nếu không có nhãn nào khớp, tùy chọn default
có thể được sử dụng để thực hiện một hành động mặc định.
Cú pháp cơ bản của lệnh switch
Dưới đây là cấu trúc tổng quát của một lệnh switch
cơ bản:
switch (biểu_thức) {
case giá_trị_1:
// Các câu lệnh
break;
case giá_trị_2:
// Các câu lệnh
break;
...
default:
// Các câu lệnh mặc định
}
Trong đó:
biểu_thức
là biểu thức hoặc biến được kiểm tra.giá_trị_1
,giá_trị_2
, ... là các giá trị cụ thể mà biểu thức có thể so sánh.break
được sử dụng để thoát ra khỏi cấu trúcswitch
sau khi một nhánh cụ thể đã được thực hiện. Nếu không cóbreak
, chương trình sẽ tiếp tục thực hiện các nhánh tiếp theo cho đến khi gặpbreak
hoặc kết thúc lệnhswitch
.
Ví dụ minh họa
Giả sử chúng ta có một chương trình đơn giản để hiển thị ngày của tuần dựa trên giá trị của một biến kiểu số nguyên:
#include <stdio.h>
int main() {
int day = 3;
switch (day) {
case 1:
printf("Monday\n");
break;
case 2:
printf("Tuesday\n");
break;
case 3:
printf("Wednesday\n");
break;
case 4:
printf("Thursday\n");
break;
case 5:
printf("Friday\n");
break;
case 6:
printf("Saturday\n");
break;
case 7:
printf("Sunday\n");
break;
default:
printf("Invalid day\n");
break;
}
return 0;
}
Trong ví dụ này, giá trị của biến day
được đặt là 3, khiến lệnh switch
chọn nhánh trường hợp với giá trị 3 và in ra "Wednesday".
Lưu ý quan trọng
- Sử dụng
break
cẩn thận: Thiếubreak
có thể dẫn đến hành vi "fall-through" (tiếp tục thực hiện nhánh tiếp theo), trừ khi đó là ý định của lập trình viên. - Khả năng rẽ nhánh: Lệnh
switch
thường sử dụng với các giá trị hằng số. Các giá trị không thể là biến hoặc biểu thức phức tạp. - Hiệu suất: Mặc dù
switch
có thể dễ đọc hơn cấu trúc nhiềuif-else
, nhưng hiệu suất của nó cũng có thể tốt hơn, nhất là khi có nhiều nhánh lựa chọn.
Kết luận
Lệnh switch
là một công cụ mạnh mẽ và tiện lợi cho việc xử lý nhiều nhánh lựa chọn trong lập trình C. Nó giúp mã nguồn rõ ràng hơn, dễ đọc hơn và đôi khi hiệu suất cao hơn. Khi lập trình viên cần đối phó với nhiều lựa chọn dựa trên một biến hoặc biểu thức, lệnh switch
là lựa chọn lý tưởng.
Comments