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");