logo

C Anahtarı Bildirimi

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

  1. ifadeyi değiştir bir tam sayı veya karakter türünde olmalıdır.
  2. vaka değeri bir tam sayı veya karakter sabiti olmalıdır.
  3. vaka değeri yalnızca switch ifadesinin içinde kullanılabilir.
  4. 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 AnahtarGeçersiz AnahtarGeçerli DurumGeç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ı

c'de switch ifadesinin akışı

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ç:

  1. değişken numarasını değiştir değerlendirilir. Bu durumda, birde ile başlatılır değer 2 .
  2. değerlendirilen sayı (2) değeri içindeki her durum etiketinde belirtilen sabitlerle karşılaştırılır. anahtar bloğu .
  3. 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) .
  4. İlgili kod bloğu durum 2 yürütülür ve bu yazdırılır 'Değer 2'dir' konsola.
  5. '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.
  6. 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.
  7. 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:

    Okunabilirlik ve netlik: anahtar bildirimi ifade etmenin kısa ve anlaşılır bir yolunu sağlar çok yollu dallanma kodda. Birden fazla durumla uğraşmak, kodu birden fazla olaydan daha düzenli ve okunması daha kolay hale getirebilir iç içe if-else ifadeleri .Yeterlik: anahtar bildirimi genellikle bir dizi işlemden daha verimlidir if-else ifadeleri birden fazla durumla uğraşırken. d olarak çalışıyor doğrudan atlama tablosu Bu, yürütme süresi açısından onu daha hızlı ve daha optimize hale getirir.Vakaya dayalı mantık: anahtar bildirimi doğal olarak programın tek bir değişkenin belirli değerlerine dayalı kararlar alması gereken senaryolara uyar. Vakaya dayalı mantığı uygulamanın sezgisel ve basit bir yoludur.

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:

    Sınırlı ifadeler:Kullanılan ifade anahtar bildirimi bir sonuçla sonuçlanmalıdır integral değeri (char, int, enum) veya uyumlu bir veri türü. Daha fazlasını kaldıramaz karmaşık veya sabit olmayan ifadeler sınırlayarak esneklik bazı senaryolarda.Aralıkları karşılaştıramama:Farklı if-else ifadeleri , anahtar bildirimi değer aralıklarını doğrudan işleyemez. Switch ifadesindeki her durum belirli bir sabit değeri temsil eder ve bu da bir dizi değerin verimli bir şekilde ele alınmasını zorlaştırır.Kayan noktalı sayılar için destek yok: anahtar bildirimi sadece kabul eder integral türleri (tamsayılar) ve gelen değerler numaralandırma ; kayan noktalı sayıları kabul etmez. Başa çıkmıyor bütünleşik olmayan veri türleri beğenmek kayan noktalı tamsayılar bazı durumlarda sorunlu olabilir.Düşme davranışı: İfadeleri değiştir sahip olmak 'suya düşmek' varsayılan olarak davranış; bu, bir vakanın 'kırılma' ifadesi , infaz edilecek 'suya düşmek' aşağıdaki vaka bloğuna. Uygun şekilde yönetilmezse bu durum istenmeyen davranışlara neden olabilir.Yinelenen kod:Bir kullanarak anahtar bildirimi bazı durumlarda, özellikle de birçok durumda aynı eylemlerin gerekli olduğu durumlarda yinelenen kodla sonuçlanabilir. Düzgün yönetilmezse bu, kod çoğaltılmasına neden olabilir.İç içe geçmiş anahtarlar karmaşık hale gelebilir:İle uğraşırken iç içe geçmiş anahtar ifadeleri , kod karmaşık hale gelebilir ve daha az okunabilir hale gelebilir. Bu tür iç içe geçmiş yapıların anlaşılması ve sürdürülmesi ilave çaba gerektirebilir.