Aracılığıyla paylaş


switch deyimi (C++)

Kodu, ayrılmaz bir deyimin değerine bağlı olarak birden çok bölüm arasında seçim sağlar.

switch ( expression )
   case constant-expression : statement
   [default  : statement]

Notlar

İfade olan tamsayı türü için belirli bir dönüştürme için bir sınıf türü veya tamsayı türü olmalıdır.Ayrılmaz yükseltme işlemi gerçekleştirildiğinde açıklandığı gibi Ayrılmaz promosyonlar.

switch Deyimi gövde oluşur bir dizi durumda etiketleri ve isteğe bağlı bir varsayılan etiket.Hiçbir iki sabit ifadelerde durumda deyimleri aynı değeri değerlendirmek.Varsayılan etiketi yalnızca bir kez görüntülenebilir.Etiketli ifade sözdizimi gereksinimler değildir ancak switch deyimi olmadan anlamsız.Varsayılan deyimi sonunda gelir değil; Ayrıca, switch ifadesinin gövdesi içinde herhangi bir yerde görünebilir.Bir servis talebi veya varsayılan etiket yalnızca switch deyimi içinde bulunabilir.

Sabit ifade her durumda etiket türü için dönüştürülmüş ifade ve karşılaştırıldığında ifade eşitlik için.Denetim geçirmeden ifadesine whose Durumsabit ifade değeriyle eşleşen ifade. Sonuçta ortaya çıkan davranış aşağıdaki tabloda gösterilmiştir.

Switch deyimi davranışı

Koşul

Eylem

Dönüştürülmüş değeri, yükseltilen denetleme ifadesi ile eşleşir.

Denetim, o etiketi aşağıdaki deyimi aktarılır.

Sabitler hiçbiri sabitler olarak eşleşen durumda etiketler; bir varsayılan etiketi bulunmaktadır.

Denetim transfer edilir varsayılan etiket.

Sabitler hiçbiri sabitler olarak eşleşen durumda etiketler; Varsayılan etiket yüklü değil.

Sonraki deyime denetim transfer switch ifadesi.

Eşleşen bir ifade bulunursa, Denetim tarafından sonraki impeded değil durumda veya varsayılan etiketleri.Sonu deyimi yürütmeyi durdurun ve Denetim deyiminin hemen sonrasına aktarmak için kullanılan switch ifadesi.Olmadan bir sonu deyimi, eşleşen her deyimin durumda sonuna kadar etiket switchdahil olmak üzere varsayılan, yürütülür.Örne?in:

// switch_statement1.cpp
#include <stdio.h>

int main() {
   char *buffer = "Any character stream";
   int capa, lettera, nota;
   char c;
   capa = lettera = nota = 0;

   while ( c = *buffer++ )   // Walks buffer until NULL
   {
      switch ( c )
      {
         case 'A':
            capa++;
            break;
         case 'a':
            lettera++;
            break;
         default:
            nota++;
      }
   }
   printf_s( "\nUppercase a: %d\nLowercase a: %d\nTotal: %d\n",
      capa, lettera, (capa + lettera + nota) );
}

Yukarıdaki örnekte, capa olursa artırılır c büyük bir A.break Deyiminin hemen sonrasına capa++ yürütülmesi sona switch deyimi gövde ve Denetim geçirmeden while döngü.Olmadan break deyimi, lettera ve nota de artýrýlýr.Benzer bir amaç tarafından sunulan break for ifadesi case 'a'.c Küçük olan a, lettera artırılır ve break ifadesi sonlanýr switch deyimi gövde.c Değil bir a veya A, default deyimi yürütüldüğünde.

Bir iç bloğu bir switch erişilebilir olduğu sürece, deyimi başlatmaları tanımlarla içerebilir — başka bir deyişle, tüm olası yürütme yollar atlanır değil.Bu bildirimleri kullanarak tanıtılan adları yerel kapsam vardır.Örne?in:

// switch_statement2.cpp
// C2360 expected
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
   switch( tolower( *argv[1] ) )
   {
       // Error. Unreachable declaration.
       char szChEntered[] = "Character entered was: ";
   
   case 'a' :
       {
       // Declaration of szChEntered OK. Local scope.
       char szChEntered[] = "Character entered was: ";
       cout << szChEntered << "a\n";
       }
       break;
   
   case 'b' :
       // Value of szChEntered undefined.
       cout << szChEntered << "b\n";
       break;
   
   default:
       // Value of szChEntered undefined.
       cout << szChEntered << "neither a nor b\n";
       break;
   }
}

A switch ifade yuvalanmış.Bu gibi durumlarda durumda veya varsayılan etiketleri ilişkilendirmek yakın switch bunları kapsayan deyimi.

Microsoft özel

Microsoft c case değerleri sayısını sınırlamak değil bir switch ifadesi.Yalnızca kullanılabilen bellekle sınırlıdır.ANSI c 257 en az gerektiren durum etiketi içinde verilen bir switch ifadesi.

Microsoft c için varsayılan Microsoft Uzantıları etkin ' dir.Use /Za derleyici seçeneği bu uzantılar devre dışı bırakmak için.

Ayrıca bkz.

Başvuru

Seçim ifadelerini (C++)

C++ anahtar sözcükler

Etiket case deyimi kullanma