switch/case in C
Rap
- programmiertechnik
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
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
Achso also Hochkommas (') im Beispiel waren es "doppelte" Anführungszeichen(")
MFG
Rap
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
你好 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.
再见,
克里斯蒂安