goto-Verwendung umgehen...aber wie ?
-
hat jmd ne Idee die Verwendung von goto zu verhindern/umgehen, ohne das gleiche switch nochmals im defazlt zweig einzubauen...?
Init: switch(Wert) { case XXXXX: // ok, weitere Anweisungen... break; case YYYYYY: // ok, weitere Anweisungen... break; case ZZZZZZ: // ok, weitere Anweisungen... break; default: // hier "Wert" auf einen Standard-Wert setzen und diesen nochmals switchen... // dabei ist der Standard-Wert entweder XXXXX, YYYYYY oder ZZZZZZ goto Init; break; }Danke schonmal!

-
bool bRepeat; do { bRepeat = false; switch(Wert) { case XXXXX: // ok, weitere Anweisungen... break; case YYYYYY: // ok, weitere Anweisungen... break; case ZZZZZZ: // ok, weitere Anweisungen... break; default: // hier "Wert" auf einen Standard-Wert setzen und diesen nochmals switchen... // dabei ist der Standard-Wert entweder XXXXX, YYYYYY oder ZZZZZZ BRepeat = true; break; } } while(bRepeat)sowas?
Grüssli
-
hm joaahhh....hmm n bissl dirty is aber noch ...aber schonmal danke

-
WechDamit schrieb:
hm joaahhh....hmm n bissl dirty is aber noch ...aber schonmal danke

bissl dirty? Wieso das denn? *ganz interessiert guckt*
Grüssli
-
hi,
du kannst es auf die hardcore-manier machen:
type_of_wert f(type_of_wert Wert) { switch(Wert) { case XXXXX: // ok, weitere Anweisungen... break; case YYYYYY: // ok, weitere Anweisungen... break; case ZZZZZZ: // ok, weitere Anweisungen... break; default: return f( dein_ausgesuchter_standardwert ); break; } return irgendwas; }
-
n egal...habs jez so gemacht do-while) .....is gut!
danke!
-
ist das nicht irgendwie umständlich? wenn wert etwas lokales ist, dann würde es reichen, den default-wert eben tatsächlich im default-zweig auszuführen. ansonsten erreicht man etwas durch umordnen (schließlich muss default: keinesfalls das letzte label in einem switch statement sein - das ist nur (sinnvolle) konvention). also
type_of_wert f(type_of_wert Wert) { switch(Wert) { case XXXXX: // ok, weitere Anweisungen... break; case YYYYYY: // ok, weitere Anweisungen... break; case ZZZZZZ: // ok, weitere Anweisungen... break; default: type_of_wert = dein_ausgesuchter_standardwert; // in diesem falle, sind die beiden zeilen überflüssig case dein_ausgesuchter_standardwert; // wenn wert nicht gerade ein funktionsargument ist, könnte es sinn machen // irgendwas } return irgendwas; }
-
camper schrieb:
wenn wert etwas lokales ist
ist er aber nicht
: ist global
-
wenn global, dann die zwanghaftigkeit von global überprüfen und lieber sein lassen, wenns passt.
-
WechDamit schrieb:
hm joaahhh....hmm n bissl dirty is aber noch ...aber schonmal danke

was ist an dem Code dirty? Würde mich mal interessieren da ich so sauber wie möglich programmieren will.