Navigation

2.4.1 switch - Anweisung

Die Anweisung switch ist eine spezielle bedingte Anweisung. Allg.:

switch ( ausdruck) {
case konst_ausdruck1 :
anweisungs_liste1
...
case konst_ausdrucki :
anweisungs_listei
default:
anweisungs_listed
case konst_ausdrucki+1 :
anweisungs_listei+1
...
case konst_ausdruckn :
anweisungs_listen
}
Der Wert von ausdruck wird mit den Werten von konst_ausdruckj(j = 1, 2, ... ) verglichen. Bei Übereinstimmung wird die dazugehörige anweisungs_listej abgearbeitet.

ACHTUNG! Nach Ausführung der anweisungs_listej eines case-Zweiges wird die switch-Anweisung nicht automatisch beendet, sondern anweisungs_listej+1 usw. ausgeführt. Dies kann aber mit Hilfe der break-Anweisung verhindert werden.

Der default-Zweig wird ausgeführt, wenn keine Übereinstimmung mit konst_ausdruckj (j = 1, ... n) festgestellt wurde.

Insbesondere können fehlen:
- der default-Zweig oder
- die case-Zweige vor dem default-Zweig oder
- die case-Zweige nach dem default-Zweig.

BEISPIELE/b241a.c: 

#include <stdio.h>
#define YES 1
#define NO  0

main()      /* Folgen von ' ' bzw. '\t' durch ' ' ersetzen */
{
  int c;
  int inleer; inleer = NO;

  while((c = getchar()) != EOF)
    switch(c)  {
      case '\t':
      case ' ' :
        if(inleer == NO)  {
          inleer = YES;
          putchar(' ');
        }
        break; /* unbedingter Abbruch der switch-Anweisung */
      default:
        inleer = NO;
        putchar(c);
        break;
    }
}

BEISPIELE/b241b.c: 

#include <stdio.h>

main()                    /* einfacher Taschenrechner */
{
    double op1, op2;
    char op[2];

    printf("Eingabe: zahl <op> zahl ENTER\n\n");
    while(scanf("%lf %1s %lf", &op1, op, &op2) != EOF) {
        switch(op[0]) {
            case '+':
                op1 += op2;
                break;
            case '-':
                op1 -= op2;
                break;
            case '*':
                op1 *= op2;
                break;
            case '/':
                op1 /= op2;
                break;
            default:
                printf("illegal operator\n");
                continue;
        }
        printf(" = %g\n", op1);
    }
}

Aufgabe:

BEISPIELE/b241c.c: 

#include <stdio.h>

main()           /* switch-Anweisung */
{ 
  int i = 6;

  while (i--)
    switch(i){
      case 0: printf("NULL ");
      case 1: printf("EINS "); break;
      case 3: printf("DREI "); break;
      case 5: printf("FUENF ");
      default: printf("%d ", i);
    }
  printf("\n");
}

Navigation