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 expression
neden 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 expression
geç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-statement
iç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 expression
değ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.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin