was mache ich bei der switch anweisung falsch (c++)? wenn ich eins gebe, dann wird mir das gar nicht angezeigt.

... komplette Frage anzeigen

3 Antworten

Hallo.

Deine Variable a ist vom Datentyp int, innerhalb deines Switches versuchst du jedoch mit einem char zu vergleichen. Das an sich führt nicht zu Problemen. Aber da die Ziffer 1 im ASCII-Code nicht den Wert 1, sondern den Wert 49 hat, du auf deiner Variable a jedoch den Wert 1 speicherst, ist der Vergleich

1 == '1'

was so viel bedeutet wie

1 == 49

was logischerweise false ist und somit einen Sprung zum Case verhindert.

Von hier an hast du die folgenden Optionen:

1. Ändere den Datentyp von a zu char

2. Schreibe den Vergleich um, sodass mit einem int verglichen wird

Gruß

EDIT: Hier außerdem die ASCII-Tabelle, falls du sie nicht bereits kennst: http://www.asciitable.com/

Antwort bewerten Vielen Dank für Deine Bewertung

Case ist keine funktion und a kein char sondern int.. und ob das <> so zugelassen ist da bin ich mir nicht sicher

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von LeonardM
26.02.2017, 19:07

ps: das return fehlt auch noch

0

Nachdem du case('1') schreibst, musst du keine geschwungene Klammer machen. Mit einem break, oder mit einem neuen case('2'), weiß der Compiler, wann du mit den case('1') befehlen auf hören möchtest


Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von filman
25.02.2017, 22:35

Sry. Ich lerne in der Schule C und hab deswegen gerade gegoogelt. hab ein wenig runtergescrollt und gelesen, dass man geschwungene Klammern doch verwenden kann^^

1

Was möchtest Du wissen?