C'deki switch ifadesi, if-else-if ladder ifadesinin bir alternatifidir ve switch değişkeni adı verilen tek bir değişkenin farklı olası değerleri için birden fazla işlem yürütmemize olanak tanır. Burada tek bir değişkenin farklı değerleri için birden fazla durumda çeşitli ifadeler tanımlayabiliriz.
Switch ifadesinin sözdizimi C dili aşağıda verilmiştir:
switch(expression){ case value1: //code to be executed; break; //optional case value2: //code to be executed; break; //optional ...... default: code to be executed if all cases are not matched; }
C dilinde switch ifadesi için kurallar
- ifadeyi değiştir bir tam sayı veya karakter türünde olmalıdır.
- vaka değeri bir tam sayı veya karakter sabiti olmalıdır.
- vaka değeri yalnızca switch ifadesinin içinde kullanılabilir.
- mola ifadesi anahtar durumunda şart değildir. Bu isteğe bağlıdır. Vakada herhangi bir break ifadesi bulunmazsa, tüm vakalar eşleşen vakadan sonra yürütülecektir. Olarak bilinir suya düşmek C switch ifadesinin durumu.
Örneklerle anlamaya çalışalım. Aşağıdaki değişkenlerin olduğunu varsayıyoruz.
int x,y,z; char a,b; float f;
Geçerli Anahtar | Geçersiz Anahtar | Geçerli Durum | Geçersiz Vaka |
---|---|---|---|
anahtar(x) | anahtar(f) | durum 3; | durum 2.5; |
anahtar(x>y) | anahtar(x+2,5) | 'a' durumu; | durum x; |
anahtar(a+b-2) | durum 1+2; | durum x+2; | |
anahtar(işlev(x,y)) | durum 'x'>'y'; | durum 1,2,3; |
C'deki switch ifadesinin akış şeması
Switch case ifadesinin işleyişi
Öncelikle switch ifadesinde belirtilen tamsayı ifadesi değerlendirilir. Bu değer daha sonra farklı durumlarda verilen sabit değerlerle tek tek eşleştirilir. Bir eşleşme bulunursa, o durumda belirtilen tüm ifadeler, varsayılan ifade de dahil olmak üzere, bu durumda sonrasında mevcut olan tüm durumlarla birlikte yürütülür. Hiçbir iki durum benzer değerlere sahip olamaz. Eşleşen vaka bir break ifadesi içeriyorsa, bundan sonra mevcut olan tüm vakalar atlanır ve kontrol anahtardan çıkar. Aksi halde eşleşen vakayı takip eden tüm vakalar yürütülecektir.
C switch ifadesi nasıl çalışır?
C'de switch ifadesinin nasıl çalıştığını adım adım inceleyelim:
Aşağıdakileri göz önünde bulundur anahtar bildirimi :
C Programı:
#include int main() { int num = 2; switch (num) { case 1: printf('Value is 1 '); break; case 2: printf('Value is 2 '); break; case 3: printf('Value is 3 '); break; default: printf('Value is not 1, 2, or 3 '); break; } return 0; }
Çıktı
Value is 2
Adım Adım Süreç:
- değişken numarasını değiştir değerlendirilir. Bu durumda, birde ile başlatılır değer 2 .
- değerlendirilen sayı (2) değeri içindeki her durum etiketinde belirtilen sabitlerle karşılaştırılır. anahtar bloğu .
- anahtar bildirimi şununla eşleşir: değerlendirilen değer (2) Belirtilen sabit ile ikinci durum (durum 2) . Bir eşleşme olduğu için program ilgili kod bloğuna atlar. eşleşen durum (durum 2) .
- İlgili kod bloğu durum 2 yürütülür ve bu yazdırılır 'Değer 2'dir' konsola.
- 'kırmak' anahtar kelime kod bloğunda mevcut durum 2 . Sonuç olarak program, kod bloğunu yürüttükten hemen sonra switch deyiminden çıkar.
- Program kontrolü tamamlandıktan sonra devam eder. anahtar bildirimi ve bunu takip eden tüm açıklamalar anahtar bildirimi idam edilir. Bu durumda anahtardan sonra herhangi bir ifade bulunmadığından program sonlandırılır.
- anahtar bildirimi değerini değerlendirdi değişken numarası , durum 2 ile bir eşleşme buldu, karşılık gelen kod bloğunu yürüttü ve ardından durumdan çıktı anahtar bloğu varlığı nedeniyle 'kırılma' ifadesi .
C'deki switch ifadesi örneği
C dili switch ifadesinin basit bir örneğini görelim.
#include int main(){ int number=0; printf('enter a number:'); scanf('%d',&number); switch(number){ case 10: printf('number is equals to 10'); break; case 50: printf('number is equal to 50'); break; case 100: printf('number is equal to 100'); break; default: printf('number is not equal to 10, 50 or 100'); } return 0; }
Çıktı
kalın için css
enter a number:4 number is not equal to 10, 50 or 100 enter a number:50 number is equal to 50
Anahtar durumu örneği 2
#include int main() { int x = 10, y = 5; switch(x>y && x+y>0) { case 1: printf('hi'); break; case 0: printf('bye'); break; default: printf(' Hello bye '); } }
Çıktı
hi
Switch ifadesinde Break ve Default anahtar sözcüğü
Açıklayalım ve tanımlayalım. 'kırmak' Ve 'varsayılan' anahtar kelimeler örnek kod ve çıktıyla birlikte switch ifadesi bağlamında.
1. Anahtar Kelimeyi Kırın:
'kırılma' anahtar kelimesi switch ifadesini zamanından önce sonlandırmak için her durumun kod bloğunda kullanılır. Program bir sorunla karşılaştığında 'kırılma' ifadesi bir vaka bloğunun içinde, hemen dışarı çıkar anahtar bildirimi sonraki vaka bloklarının yürütülmesini önler. 'kırılma' ifadesi switch ifadelerinden kaçınmak için çok önemlidir' 'suya düşmek' davranış.
Örnek:
kullanımını anlamak için bir program alalım. anahtar kelimeyi kır C'de.
#include int main() { int num = 3; switch (num) { case 1: printf('Value is 1 '); break; // Exit the switch statement after executing this case block case 2: printf('Value is 2 '); break; // Exit the switch statement after executing this case block case 3: printf('Value is 3 '); break; // Exit the switch statement after executing this case block default: printf('Value is not 1, 2, or 3 '); break; // Exit the switch statement after executing the default case block } return 0; }
Çıktı
Value is 3
Açıklama:
Bu örnekte, anahtar bildirimi değerini değerlendirir değişken numarası (hangisi 3 ) ve onunla eşleştirir durum 3 . İlgili kod bloğu durum 3 yürütülür, yazdırılır 'Değer 3' konsola. 'kırılma' ifadesi içinde durum 3 programın bu vaka bloğunu yürüttükten hemen sonra switch ifadesinden çıkmasını sağlar ve diğer durumların yürütülmesini engeller.
2. Varsayılan Anahtar Kelime:
Hiçbiri büyük/küçük harf sabitleri eşleştir değerlendirilen ifade olarak faaliyet göstermektedir her şeyi kapsayan durum . Eşleşen bir durum yoksa ve 'varsayılan' durum mevcut ile ilişkili kod bloğu 'varsayılan' dava yürütülür. Belirtilen durumlardan hiçbirinin sağlanan girdi için geçerli olmadığı durumları ele almak için sıklıkla kullanılır.
Örnek:
kullanımını anlamak için bir program alalım. varsayılan anahtar kelime C'de.
#include int main() { int num = 5; switch (num) { case 1: printf('Value is 1 '); break; case 2: printf('Value is 2 '); break; case 3: printf('Value is 3 '); break; default: printf('Value is not 1, 2, or 3 '); break; // Exit the switch statement after executing the default case block } return 0; }
Çıktı
Value is not 1, 2, or 3
Açıklama:
Bu örnekte, anahtar bildirimi değerini inceliyor değişken numarası (hangisi 5 ). Hiçbir durum sayıyla eşleşmediğinden program, ilgili kod bloğunu gerçekleştirir. 'varsayılan' durum . 'kırılma' ifadesi içinde 'varsayılan' durum programın çıkış yapmasını sağlar anahtar bildirimi çalıştırdıktan sonra 'varsayılan' vaka bloğu.
İkisi de 'kırmak' Ve 'varsayılan' anahtar kelimeler Bir switch ifadesi içindeki yürütme akışını kontrol etmede önemli roller oynarlar. 'kırılma' ifadesi düşme davranışını önlemeye yardımcı olurken, 'varsayılan' durum eşsiz vakaları ele almanın bir yolunu sağlar.
C Switch deyimi son noktadır
C dilinde switch ifadesi başarısızdır; bu, eğer switch durumunda break ifadesini kullanmazsanız, eşleşen durumdan sonraki tüm durumların yürütüleceği anlamına gelir.
Aşağıda verilen örnekle switch ifadesinin düşme durumunu anlamaya çalışalım.
#include int main(){ int number=0; printf('enter a number:'); scanf('%d',&number); switch(number){ case 10: printf('number is equal to 10 '); case 50: printf('number is equal to 50 '); case 100: printf('number is equal to 100 '); default: printf('number is not equal to 10, 50 or 100'); } return 0; }
Çıktı
enter a number:10 number is equal to 10 number is equal to 50 number is equal to 100 number is not equal to 10, 50 or 100
Çıktı
enter a number:50 number is equal to 50 number is equal to 100 number is not equal to 10, 50 or 100
İç içe anahtar durumu bildirimi
Bir switch ifadesinin içinde istediğimiz kadar switch ifadesi kullanabiliriz. Bu tür ifadelere iç içe anahtar durumu ifadeleri denir. Aşağıdaki örneği düşünün.
#include int main () { int i = 10; int j = 20; switch(i) { case 10: printf('the value of i evaluated in outer switch: %d ',i); case 20: switch(j) { case 20: printf('The value of j evaluated in nested switch: %d ',j); } } printf('Exact value of i is : %d ', i ); printf('Exact value of j is : %d ', j ); return 0; }
Çıktı
the value of i evaluated in outer switch: 10 The value of j evaluated in nested switch: 20 Exact value of i is : 10 Exact value of j is : 20
Switch ifadesinin avantajları:
Birkaç avantajı var anahtar bildirimi C'de. Switch ifadesinin bazı temel avantajları şunlardır:
anahtar bildirimi görevi gören varsayılan bir durumun kullanılmasını destekler. hepsini yakala seçeneği sağlanan durumların hiçbiriyle eşleşmeyen değerler için. Bu varsayılan durum Açıkça belirtilmeyen olağandışı girdileri veya durumları ele alır.
Switch ifadesinin dezavantajları:
Birkaç dezavantajı var anahtar bildirimi C'de. Switch ifadesinin bazı ana dezavantajları şunlardır: