شرح C++

جملة switch

بنية switch

بديل أنظف عن سلسلة if/else if عند المقارنة بقيمة واحدة:

int day = 3;

switch (day) {
    case 1:
        cout << "الأحد";
        break;
    case 2:
        cout << "الإثنين";
        break;
    case 3:
        cout << "الثلاثاء";
        break;
    default:
        cout << "يوم آخر";
}

أهمية break

⚠️ بدون break، يستمرّ التنفيذ في الحالات التالية (fall-through). هذا أكثر خطأ شائع في switch.

int x = 1;
switch (x) {
    case 1:
        cout << "واحد ";   // يُنفَّذ
    case 2:
        cout << "اثنان ";  // يُنفَّذ أيضًا! (لا break)
        break;
}
// الناتج: واحد اثنان

دمج حالات (استغلال fall-through عمدًا)

char grade = 'B';

switch (grade) {
    case 'A':
    case 'B':
        cout << "ممتاز أو جيّد جدًّا";
        break;
    case 'C':
        cout << "جيّد";
        break;
    default:
        cout << "يحتاج تحسينًا";
}

switch مقابل if

switchif/else
الأنسب لـقيمة واحدة بحالات كثيرةشروط معقّدة/نطاقات
الأنواعint, char, enumأي تعبير منطقي

💡 لا يعمل switch مع string أو double أو النطاقات (x > 5) — استخدم if لتلك الحالات.

أخطاء شائعة

  • نسيان break فتُنفَّذ حالات غير مقصودة.
  • محاولة استخدام switch مع string (غير مدعوم).

🎯 التالي: المصفوفات (Arrays).