Switch
-
Hallo Leute, der Wert eines Labels muss doch ein konstanter Ausdruck sein oder? Also z.B 'a' oder 1 oder true/false oder?Man kann ja z.B nicht isalpha() oder ähnliches miteinbinden oder?
-GhostfaceChilla-
-
Du hast dir die Antwort gerade selber gegeben!

-
Ok, danke

-GhostfaceChilla-
-
Also hab noch en kurze Frage

Habs zwar schon geteste und es funktioniert auch, aber wenn man das ein schlechter Stil is, möchte ich es auch so nicht weiter verwenden und zwar:
Wenn ich eine Konstanteconst int i = 1verwende, kann ich dies ja auch dann im meinem Case-Label
case i: ...verwenden oder? Da ja ein const int ja ein konstanter Ausruck ist oder?
-GhostfaceChilla-
-
GhostfaceChilla schrieb:
Da ja ein const int ja ein konstanter Ausruck ist oder?
-GhostfaceChilla-
Ja, ist es. Aber Deinem Beispiel nach, ist ein enum eher das, was Du willst.
-
Ja ok danke.
Ja du hast recht mit enum, des sollte grad halt nur son Beispiel zum verdeutlichen sein
-GhostfaceChilla-
-
Konstante != konstanter Ausdruck. Eine Konstante ist einfach etwas, das const ist. Ein konstanter Ausdruck ist etwas, das bereits zur Compilezeit einen festgelegten Wert hat. Folgendes wäre beispielsweise eine Konstante, jedoch kein konstanter Ausdruck und damit für ein case Label ungeeignet:
int i; cin >> i; int const j = i; // j ist const, aber kein konstanter Ausdruck
-
Also wäre es dann so:
int i = 0; cin >> i; const int j = i; //Konstante const int k = 1; // Konstanter Ausruck?-GhostfaceChilla-
-
Ja.