Aracılığıyla paylaş


switch Deyim (C)

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 constant-expression biri 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ı switch deyim içindeki hiçbir iki constant-expression 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 expressiondeğilse case constant-expression 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 case default etiketi yalnızca bir switch deyimin içinde görünebilir.

ve case constant-expression türü switch expression tam sayı olmalıdır. Her case constant-expression birinin değeri, deyim gövdesi içinde benzersiz olmalıdır.

case deyiminin gövdesinin switch ve default 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 caseönce hiçbir break 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 'a'eşit 'A' olmadığında artırılırc.

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 'f'convert_hex arasında 'a' herhangi bir harfe eşitse constant-expression işlev çağrılır.

Microsoft'a özgü

Microsoft C, bir switch deyimdeki değer sayısını case sınırlamaz. Sayı yalnızca kullanılabilir bellekle sınırlıdır. ANSI C, bir switch deyimde en az 257 case 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.

Ayrıca bkz.

switch Deyim (C++)