Rap: switch/case in C

Hallo,

Ich bin C-Anfänger. Im Internet habe ich folgende Switch/Case Anweisung gefunden:
_____________________________________________________________
    char op;
    .
    .
    .
    switch(op)
    {
        case "+":
                        scanf("%f",&operator);
                        erg+=operator;
                        break;
        case "-":
                        scanf("%f",&operator);
                        erg-=operator;
                        break;
        case "*":
                        scanf("%f",&operator);
                        erg*=operator;
                        break;
        case "/":
                        scanf("%f",&operator);
                        if(operator!=0)
                        {
                        erg/=operator;
                        }
                        else
                        {
                        printf("Division durch 0!");}
                        break;
        case "=":
         break;
    }
    .
    .
    .
_____________________________________________________________

Der Compiler meldet bei jeder Case-Anweisung: "case label does not reduce to an integer constant"

Wie kann ich (in C) mit case eine Variable vom Datentyp char abfragen?

MFG

Rap

  1. Yerf!

    Wie kann ich (in C) mit case eine Variable vom Datentyp char abfragen?

    Indem du ihn als Char angibst? '+' (also einfach Anführungszeichen...)

    Gruß,

    Harlequin

    --
    <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->
    1. Achso also Hochkommas (') im Beispiel waren es "doppelte" Anführungszeichen(")

      MFG

      Rap

      1. Yerf!

        Achso also Hochkommas (') im Beispiel waren es "doppelte" Anführungszeichen(")

        Genau. Hochkommas sind für Char, die doppelten für Strings. Die Switch-Anweisung kann eigentlich nur ersteres (weis nicht, ob das bei C++ evtl. anders ist).

        Gruß,

        Harlequin

        --
        <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->
        1. 你好 Harlequin,

          Achso also Hochkommas (') im Beispiel waren es "doppelte" Anführungszeichen(")

          Genau. Hochkommas sind für Char, die doppelten für Strings.

          Der Unterschied ist etwas komplexer: Strings gibt es in C nicht. Anführungszeichen geben einen Pointer auf einen Speicherbereich zurück, der die Zeichen enthält, die innerhalb der Anführungszeichen stehen, zuzüglich eines Null-Bytes am Ende.

          Die Switch-Anweisung kann eigentlich nur ersteres

          Switch kann Integer-Fälle unterscheiden.

          (weis nicht, ob das bei C++ evtl. anders ist).

          Das ist in C++ genau so.

          再见,
           克里斯蒂安