Switch Funktion mit Modulo (?)
-
Hallo ich bins wieder mal, ich hab da mal wieder so ne kleine Frage.
int e=6%4, f=0; switch (e) { case 1 : f=1; case 2 : f=2; default : f=3; } cout << f << endl;Warum wird hier der default ausgeführt?
6 modulo 4 ist doch = 2 (!)
Müsste er mir nicht den case 2 ausgeben?
-
es fehlt das "break;"
-
schwarztee schrieb:
int e=6%4, f=0; switch (e) { case 1 : f=1; case 2 : f=2; default : f=3; } cout << f << endl;Warum wird hier der default ausgeführt?
Es wird 1:, 2: und default: ausgeführt.
Beim schrittweisen Ausführen im Debugger hätte man das einfach selber herausfinden können
Ans Ende von jedem case gehört ein break; außer man möchte absichtlich mehrere case zusammenfassen.
-
MichelRT schrieb:
Es wird 1:, 2: und default: ausgeführt.
1: wird nicht ausgeführt.
-
Osbios schrieb:
MichelRT schrieb:
Es wird 1:, 2: und default: ausgeführt.
1: wird nicht ausgeführt.
Gut aufgepasst

-
Ah, ok es fehlen die "breaks" aber warum springt er dann auf default?
Wenn die "breaks" drin wären, würde er aber "case 2" ausgeben oder?
Kanns leider bei mir zu Hause nicht testen, irgendwie kommen nur Fehlermeldungen bei meinem Visual C++.

-
schwarztee schrieb:
Ah, ok es fehlen die "breaks" aber warum springt er dann auf default?
Er springt ja nicht auf default sondern auf 2 und rutscht dann aber auf default durch.
Wenn die "breaks" drin wären, würde er aber "case 2" ausgeben oder?
Ja, breaks breaken halt raus, sodass nix durchfällt.