Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
switch ve case deyimleri karmaşık koşullu ve dallanma işlemlerini denetlemeye yardımcı olur. deyimi, switch denetimi gövdesindeki bir deyime aktarır.
Sözdizimi
selection-statement:
switch ( expression ) statement
labeled-statement:
case constant-expression : statement
default : statement
Açıklamalar
Deyimi switch , değerine bağlı olarak denetimin deyimi gövdesinde birine labeled-statement aktarılmasına expressionneden olur.
ve değerlerinin her expression biri constant-expression bir integral türüne sahip olmalıdır. derleme constant-expression zamanında kesin olmayan bir sabit tamsayı değerine sahip olmalıdır.
Denetim, case değeri değeri ile constant-expression eşleşen deyimine expressiongeçer. deyimi switch herhangi bir case sayıda örnek içerebilir. Ancak, aynı constant-expression deyim içindeki hiçbir iki switch değer aynı değere sahip olamaz. Deyim gövdesinin switch yürütülmesi, eşleşen labeled-statementiçindeki veya sonrasındaki ilk deyimde başlar. Yürütme, gövdenin sonuna kadar veya bir break deyim denetimi gövde dışına aktarana kadar devam eder.
deyiminin switch kullanımı genellikle şöyle görünür:
switch ( expression )
{
// declarations
// . . .
case constant_expression:
// statements executed if the expression equals the
// value of this constant_expression
break;
default:
// statements executed if expression does not equal
// any case constant_expression
}
deyimi içinde break belirli bir etiketli deyimin işlenmesini sonlandırmak için deyimini switch kullanabilirsiniz. Deyiminin sonuna doğru dallar switch . olmadan break, program bir sonraki etiketli deyime devam eder ve deyiminin sonuna break veya sonuna ulaşılana kadar deyimleri yürütür. Bu devamlılık bazı durumlarda tercih edilebilir.
değeri default değerine eşit casedeğilse constant-expressionexpression deyimi yürütülür. Deyim yoksa default ve case eşleşme bulunmazsa, gövdedeki switch deyimlerin hiçbiri yürütülür. En fazla bir default deyim olabilir. Deyimin default sonunda gelmesi gerekmez. Deyiminin gövdesinde herhangi bir switch yerde görünebilir. Veya casedefault etiketi yalnızca bir switch deyimin içinde görünebilir.
ve switchexpression türü caseconstant-expression tam sayı olmalıdır. Her caseconstant-expression birinin değeri, deyim gövdesi içinde benzersiz olmalıdır.
case deyiminin gövdesinin default ve switch etiketleri yalnızca deyimi gövdesinde yürütmenin nerede başlatıldığını belirleyen ilk testte önemlidir.
switch deyimleri iç içe yerleştirilmiş olabilir. Tüm statik değişkenler, herhangi bir switch deyimde yürütülmeden önce başlatılır.
Not
Bildirimler, gövdeyi oluşturan switch bileşik deyimin başında görünebilir, ancak bildirimlere dahil edilen başlatmalar gerçekleştirilmez. deyimi, switch başlatmalar içeren satırları atlayarak denetimi doğrudan gövde içindeki yürütülebilir bir deyime aktarır.
Aşağıdaki örneklerde deyimler gösterilmektedir switch :
switch( c )
{
case 'A':
capital_a++;
case 'a':
letter_a++;
default :
total++;
}
Bu örnekteki gövdenin switch üç deyimi de öğesine eşitse c'A'yürütülür çünkü aşağıdakilerden breakönce hiçbir case deyim görüntülenmez. Yürütme denetimi ilk deyime (capital_a++;) aktarılır ve gövdenin geri kalanı boyunca sırayla devam eder. değerine eşitse c'a'letter_a ve total artırılır. Yalnızca total veya ceşit 'A' olmadığında artırılır'a'.
switch( i )
{
case -1:
n++;
break;
case 0 :
z++;
break;
case 1 :
p++;
break;
}
Bu örnekte, bir break deyimi gövdenin her deyimini switch izler. deyimi, break bir deyim yürütüldükten sonra deyim gövdesinden bir çıkış zorlar. -1'e eşitse i , yalnızca n artırılır. Aşağıdaki break deyim n++; , yürütme denetiminin kalan deyimleri atlayarak deyim gövdesinden geçmesine neden olur. Benzer şekilde, 0'a eşitse i , yalnızca z artırılır; 1'e eşitse i yalnızca p artırılır.
break Son ifade kesinlikle gerekli değildir, çünkü denetim bileşik deyiminin sonunda gövdeden geçer. Tutarlılık için dahildir.
Aşağıdaki örnekte gösterildiği gibi tek bir deyim birden çok case etiket taşıyabilir:
switch( c )
{
case 'a' :
case 'b' :
case 'c' :
case 'd' :
case 'e' :
case 'f' : convert_hex(c);
}
Bu örnekte, ile constant-expression'a' arasında 'f' herhangi bir harfe eşitse convert_hex işlev çağrılır.
Microsoft'a özgü
Microsoft C, bir case deyimdeki değer sayısını switch sınırlamaz. Sayı yalnızca kullanılabilir bellekle sınırlıdır. ANSI C, bir case deyimde en az 257 switch etikete izin verilmelidir.
default Microsoft C için, Microsoft uzantılarının etkinleştirilmesi gerekir. Bu uzantıları devre dışı bırakmak için /Za derleyicisi seçeneğini kullanın.