Udostępnij za pośrednictwem


Przełącznik instrukcji (C++)

Umożliwia wybór między sekcje kodu, w zależności od wartości wyrażeń integralną.

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

Uwagi

Wyrażenie musi być typem całkowitym lub typu klasy, dla którego jest jednoznaczne konwersji na typ integralny.Promocja integralną jest przeprowadzane zgodnie z opisem w Promocje integralną.

switch Instrukcji organ składa się z serii przypadku etykiet i opcjonalny domyślną etykiety.Nie dwóch wyrażeń stałych w przypadku sprawozdań może służyć do tej samej wartości.Domyślną etykieta może występować tylko raz.Etykietą instrukcje nie są wymagania składni, ale switch instrukcja jest pozbawione sensu bez nich.Domyślna deklaracja nie muszą pochodzić na końcu; to może występować w dowolnym miejscu jednostka instrukcja switch.Etykieta sprawy lub domyślne może wystąpić tylko wewnątrz instrukcji switch.

Wyrażenie stała w każdym przypadku etykieta jest konwertowane na typ wyrażenie i w porównaniu z wyrażenie dla równości.Kontroli przechodzi do deklaracji, których przypadkuwyrażenie stała odpowiada wartości wyrażenie. Wynikowe zachowanie jest pokazane w poniższej tabeli.

Zachowanie instrukcja switch

Warunek

Akcja

Przekonwertowane wartości zgodny z podwyższanego wyrażenie kontrolującego.

Formant jest przenoszona do instrukcji znajdującej się po tej etykiety.

Brak stałe odpowiadają stałych w przypadku etykiety; domyślną etykieta jest obecny.

Formant jest przenoszony do domyślną etykiety.

Brak stałe odpowiadają stałych w przypadku etykiety; domyślne etykiety nie jest obecny.

Formant jest przenoszony do instrukcji znajdującej się po switch instrukcji.

Jeśli wyrażenie pasujące zostanie znaleziony, kontroli nie jest utrudniona przez kolejne przypadku lub domyślną etykiety.Break instrukcji jest używany do zatrzymać wykonywanie i przenieść formant do instrukcji znajdującej się po switch instrukcji.Bez break instrukcji, co oświadczenie dopasowanej przypadku etykiety do końca switch, w tym domyślną, jest wykonywany.Na przykład:

// 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) );
}

W powyższym przykładzie capa jest zwiększana, gdy c to wielka A.break Po instrukcji capa++ kończy wykonywanie switch treści deklaracji i kontroli przekazuje do while pętli.Bez break instrukcji, lettera i nota także być zwiększane.Podobnych celów jest obsługiwana przez break statement for case 'a'.Jeśli c mała litera a, lettera jest zwiększana i break kończy instrukcji switch treść instrukcji.Jeśli c nie jest a lub A, default wykonaniu instrukcji.

Wewnętrzny blok switch instrukcji może zawierać definicji do inicjowania, jak długo są osiągalne — to znaczy nie są pomijane przez wszystkie możliwe wykonanie ścieżki.Nazwy wprowadzone za pomocą deklaracje te mają zakres lokalny.Na przykład:

// 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 instrukcji, które mogą być zagnieżdżane.W takich przypadkach przypadku lub domyślną etykiety skojarzenia z najbardziej switch instrukcji, która otacza je.

Programu Microsoft

Microsoft c nie ogranicza liczbę przypadków wartości w switch instrukcji.Numer jest ograniczona jedynie przez ilość dostępnej pamięci.ANSI c wymaga co najmniej 257 dopuszczalne w przypadku etykiet switch instrukcji.

Domyślne dla Microsoft C jest, że włączone są rozszerzenia Microsoft.Użyj /Za opcję kompilatora, aby wyłączyć te rozszerzenia.

Zobacz też

Informacje

Instrukcje zaznaczenia (C++)

Słów kluczowych języka C++

W przypadku instrukcji przy użyciu etykiet