switch-Anweisung (C++)

Ermöglicht die Auswahl von mehreren Abschnitten des Codes abhängig vom Wert eines ganzzahligen Ausdruck.

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

Hinweise

Der Ausdruck muss aus einem ganzzahligen Typ oder einem Klassentyp sein, für den keine eindeutige Konvertierung in den ganzzahligen Typ vorhanden ist.Ganzzahlige Erweiterung ausgeführt wird, wie in Ganzzahlige Höherstufungenbeschrieben.

Der switch-Anweisungstext besteht aus einer Reihe von der Fall Bezeichnungen und optionalen Standardwert Bezeichnung.Zwei konstanter Ausdrücke in Fall-Anweisungen können auf denselben Wert ausgewertet werden.Die Standardwert Bezeichnung kann nur einmal angegeben werden.Die Anweisungen mit Marke sind jedoch keine syntaktische Anforderungen, die switch-Anweisung ist ohne sie ohne Bedeutung.Die Anweisung muss nicht am Schluss gekommen. Sie kann eine beliebige Stelle im Text der switch-Anweisung angezeigt werden.Ein Fall oder eine standardmäßige Bezeichnung können innerhalb einer switch-Anweisung nur angezeigt werden.

Der konstante Ausdruck in jeder Fall Bezeichnung wird dem Typ des Ausdrucks konvertiert und im Vergleich zu Ausdruck auf Gleichheit.Steuerelements an die Anweisung übergeben, deren Fall konstanter Ausdruck den Wert des Ausdrucksentspricht.Das resultierende Verhalten wird in der folgenden Tabelle dargestellt.

Switch-Anweisungs-Verhalten

Bedingung

Aktion

Der konvertierte Wert gehöherstuften werden die vom steuernden Ausdruck.

Steuerelemente werden an die Anweisung übergeben, die diese Bezeichnung folgt.

Keiner der Konstanten gleichen die Konstanten in Fall Bezeichnungen ab. Standardwert eine Beschriftung vorhanden.

Standardwert-Steuerelement wird der Bezeichnung übertragen.

Keiner der Konstanten gleichen die Konstanten in Fall Bezeichnungen ab. Standardwert Die Bezeichnung ist nicht vorhanden.

Steuerelement wird mit der Anweisung nach der Anweisung switch übertragen.

Wenn ein entsprechender Ausdruck gefunden wird, wird Steuerelement nicht durch den folgenden Fall oder Standardwert Bezeichnungen behindert.Die Unterbrechen-Anweisung wird verwendet, um die Ausführung und Steuerung an die Anweisung nach der switch-Anweisung zu beenden.Ohne eine Break-Anweisung wird jede Anweisung in der übereinstimmenden Fall Bezeichnung am Ende switch, einschließlich Standardwert, ausgeführt.Beispiele:

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

Im obigen Beispiel wird capa erhöht, wenn c großgeschriebenes Aist.Die break-Anweisung, nachdem capa++ Ausführung des switch-Anweisungstexts und -Steuerelements beendet, führt zu while die Schleife.Ohne die break-Anweisung würden lettera und nota ebenfalls erhöht.Ein ähnlicher Zweck wird von der break-Anweisung für case 'a'bereitgestellt.Wenn c kleingeschriebenes aist, wird lettera erhöht und die break-Anweisung beendet den Anweisungstext switch .Wenn c nicht a oder Aist, wird die default-Anweisung ausgeführt.

Ein innerer - Block einer switch-Anweisung kann Definitionen mit Initialisierungen enthalten, solange sie erreichbar sind, nicht umgangen, d. h. von allen möglichen Ausführungspfade.Die Namen, die mit dieser Deklarationen eingeführten lokalen Gültigkeitsbereich aufweisen.Beispiele:

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

Eine switch-Anweisung kann geschachtelt werden.In solchen Fällen Fall oder Standardwert employees Bezeichnung mit der nächsten switch-Anweisung, die sie enthält.

Microsoft-spezifisch

Microsoft C# wird nicht die Anzahl der Fall werten in einer switch-Anweisung ein.Die Zahl wird nur durch den verfügbaren Speicher beschränkt.ANSI C erfordert mindestens 257 Fall von Bezeichnungen in einer zugelassen wird switch-Anweisung.

Der Standardwert für Microsoft C# besteht darin, dass die Microsoft-Erweiterungen aktiviert sind.Verwenden Sie die /Za-Compileroption diese Erweiterungen zu deaktivieren.

Siehe auch

Referenz

Selektionsangaben (C++)

C++-Schlüsselwörter

Verwenden von Bezeichnungen in der Fall Anweisung