next up previous contents
Next: Funktionen und Operatoren Up: Kontrollstrukturen Previous: goto-Anweisung, Labels

switch-Anweisung

Ein gezähmtes goto ist die switch-Anweisung, die je nach Wert einer ganzzahligen Variablen verschiedene Sprungziele einer direkt anschließend mit case-Anweisungen gebildeten Liste auswählt und die Verarbeitung dann an dieser Stelle fortsetzt. Dieses Konstrukt ist häufig anzutreffen, wenn eine Variable dazu benutzt wird, eine Auswahl aus einer vorgegebenen Anzahl möglicher Alternativen festzulegen.

Im Prinzip können switch-Anweisungen immer durch if...else if-Konstrukte ersetzt werden, sind aber häufig übersichtlicher.

  char c;
  cin >> c;
  switch( c ) {                 // begin case block
  case 'a': cout << "hello world!";  
            break;
  case 'b': cout << "HELLO ";   // fallthrough intended, comment missing break
  case 'c': out << "WORLD!"; 
            break;
  default:  cout << "unknown input";
            break;              // not necessary, but good style
  }                             // end case block

Das obige Programmsegment gibt in Kleinbuchstaben "hello world!" aus, wenn der Buchstabe 'a' übergeben wurde, im Falle von c das Wort WORLD! und im Falle von b die Zeichenfolge HELLO WORLD!. Dieses merkwürdig erscheinende Verhalten entsteht dadurch, daß nach Ansprung des passenden case-Labels alle folgenden Anweisungen bis zu einem eventuellen break durchlaufen werden (``fallthrough''). Da dies häufig nicht das beabsichtigte Verhalten ist, lohnt sich an einer solchen Stelle anstelle des break immer ein Kommentar. Das default-Label ist optional und wird angesprungen, falls sonst kein passendes in der case-Liste gefunden wird.



© R.Hilfer et al., ICA-1, Univ. Stuttgart
28.6.2002