دستور switch در C

دستور switch در زبان برنامه‌نویسی C

دستور switch یکی از ساختارهای کنترلی مهم در زبان C است که برای تصمیم‌گیری چندگانه بر اساس مقایسه یک متغیر با مقادیر مختلف استفاده می‌شود. این دستور جایگزین مناسبی برای ساختارهای if-else تو در تو محسوب می‌شود.

نکته کلیدی: دستور switch فقط با انواع داده‌ای که می‌توانند به اعداد صحیح تبدیل شوند کار می‌کند (مانند char, int, enum).

ساختار پایه دستور switch

سینتکس اصلی دستور switch به صورت زیر است:

    switch(عبارت) {
        case مقدار1:
            // کدهای مربوطه
            break;
        case مقدار2:
            // کدهای مربوطه
            break;
        default:
            // کدهای پیش‌فرض
    }
    

هر بلوک case شامل یک مقدار برای مقایسه با عبارت اصلی است. اگر هیچ‌یک از caseها مطابقت نداشته باشند، بلوک default اجرا می‌شود.

عنصر توضیح
switch کلمه کلیدی شروع ساختار
case تعریف یک شرط خاص
break خروج از بلوک switch
default شرط پیش‌فرض در صورت عدم تطابق

مثال کاربردی

در این مثال، برنامه روزهای هفته را بر اساس عدد ورودی نمایش می‌دهد:

    #include <stdio.h>
    
    int main() {
        int day = 3;
        
        switch(day) {
            case 1:
                printf("شنبه");
                break;
            case 2:
                printf("یکشنبه");
                break;
            case 3:
                printf("دوشنبه");
                break;
            default:
                printf("روز نامعتبر");
        }
        return 0;
    }
    

در این کد، اگر مقدار متغیر day برابر با 3 باشد، عبارت "دوشنبه" چاپ خواهد شد.

نکات مهم در استفاده از switch

  • دستور break باعث خروج از بلوک switch می‌شود. عدم استفاده از آن باعث اجرای caseهای بعدی می‌شود (پدیده fall-through)
  • بلوک default اختیاری است اما برای مدیریت شرایط غیرمنتظره توصیه می‌شود
  • مقادیر caseها باید منحصر به فرد و از نوع صحیح یا کاراکتر باشند
  • می‌توان چندین case را برای یک بلوک کد مشترک استفاده کرد

برای یادگیری عمیق‌تر و مثال‌های پیشرفته‌تر می‌توانید از منبع بیشتر بخوانید استفاده نمایید.


مقایسه switch و if-else

در جدول زیر تفاوت‌های کلیدی این دو ساختار را مشاهده می‌کنید:

ملاک switch if-else
نوع مقایسه برابر بودن شرایط مختلف
کارایی برای شرایط چندگانه ساده برای شرایط پیچیده
خوانایی بالا در شرایط برابر بالا در شرایط پیچیده

در نهایت، انتخاب بین switch و if-else به شرایط مسئله و خوانایی کد بستگی دارد. برای اطلاعات تخصصی‌تر می‌توانید به این منبع مراجعه کنید.