Standart C Programlama Dili


2.11. switch Deyimi

switch (ifade)
  deyim

switch deyimi birçok şıktan bir tanesini seçmede kullanılır. İşte kullanıcıya “menüler” sunan bir programda bulunabilecek bir switch:

switch (_getche()) {
  case 'r':
  case 'R':
    rezervasyon_yapma();
    break;
  case 'l':
  case 'L':
    yolcu_listeleme();
    break;
  case 'i':
  case 'I':
    rezervasyon_iptali();
    break;
  case 'c':
  case 'C':
    cikis();
    break;
  default:
    printf("\nYanlis secenek... Tekrar deneyin.\n");
}

Bu örnek switch’in tüm önemli özelliklerini göstermektedir. Parantez içine yazılmış tamsayı tipindeki—bu örnekte olduğu gibi, bir karakter de olabilir—sayı ifadesi hesaplanır, önüne case anahtar sözcüğü getirilmiş olan değişmez ifadelerden birinin değeri buna uyuyorsa kontrol bu case etiketli deyime aktarılır ve buradan sıralı olarak devam eder. Eğer hiçbir case etiketindeki değer ifadenin değerine uymuyorsa, iki olasılık vardır: Deyim içinde bir default etiketi varsa, kontrol buraya aktarılır, aksi takdirde switch deyiminden çıkılır.

Yukarıdaki deyimde hiçbir break konulmadığı durumda, r veya R girildiğinde, bütün fonksiyonlar (rezervasyon_yapma, yolcu_listeleme vs) çağrılacak ve hata mesajı da basılacaktır. Bundan dolayı, hemen hemen bütün switch deyimlerinde break’ler bulunur. Örnekte olduğu gibi, switch’teki parantez içindeki ifadeden sonra gelen deyim genelde bir bloktur.

case ve default etiketleri switch deyimleri dışında kullanılamazlar. Ayrıca, bir switch deyimi içinde birden fazla default etiketi ve aynı switch içinde aynı değere sahip birden fazla case etiketi olamaz.

switch’in öyküsünü başka bir ilginç örnekle bitiriyoruz:

switch (yas)
  case 20:
  case 40:
  case 60:
    printf("20, 40 yada 60 yasindasiniz.\n");