دستور switch در C
استفاده از switch برای انتخاب بین حالتهای متعدد و نقش break و default
دستور switch
وقتی میخواهید یک متغیر را با چندین مقدار مشخص مقایسه کنید، بهجای زنجیرهی طولانی else if از switch استفاده کنید — تمیزتر و خواناتر است:
switch (expression) {
case value1:
// کد
break;
case value2:
// کد
break;
default:
// اگر هیچ case مطابقت نداشت
}
مثال: روز هفته
int day = 4;
switch (day) {
case 1:
printf("دوشنبه");
break;
case 2:
printf("سهشنبه");
break;
case 3:
printf("چهارشنبه");
break;
case 4:
printf("پنجشنبه");
break;
default:
printf("روز نامعتبر");
}
نقش کلیدی break
دستور break باعث میشود از switch خارج شویم. اگر فراموشش کنید، اجرا به case بعدی هم سرریز میشود (fall-through):
int day = 2;
switch (day) {
case 1:
printf("شنبه");
case 2:
printf("یکشنبه"); // اجرا میشود
case 3:
printf("دوشنبه"); // این هم اجرا میشود! (خطا!)
break;
}
گاهی این رفتار عمداً استفاده میشود تا چند case یک کد مشترک داشته باشند:
switch (day) {
case 6:
case 7:
printf("آخر هفته"); // هم ۶ و هم ۷
break;
default:
printf("روز کاری");
}
بخش default
اگر هیچ caseای با مقدار مطابقت نداشته باشد، بخش default اجرا میشود. مثل else در if.
چه زمانی switch و چه زمانی if؟
| ویژگی | switch | if...else |
|---|---|---|
| مقایسه با مقادیر ثابت | عالی ✅ | مناسب |
| شرطهای پیچیده (بزرگتر/کوچکتر) | نمیتواند ❌ | عالی ✅ |
| مقایسه رشته | نمیتواند ❌ | میتواند ✅ |
| خوانایی با caseهای زیاد | بهتر | بدتر |
نکات مهم
- switch فقط با انواع صحیح و char کار میکند (نه float و نه رشته)
- مقادیر case باید ثابت باشند؛ متغیر مجاز نیست
- default میتواند هرجای switch باشد اما معمولاً آخر میآید
این مبحث بخشی از دوره آموزش کامل زبان C است.