atari-home.de - Foren
Software => Coding => Thema gestartet von: matashen am Fr 27.02.2009, 22:04:21
-
Hallöchen, ich optimier gerade wie wild in meinem Lynxopoly rum.
jetzt hab ich versucht manche Ifs in switch umzubauen
Kann mir jemand sagen warum bei
switch(moneychase[nr])
{
case(0):showmoney(30,15,11,price[bei_feld[akt_player]],0);
case(1):showmoney(50,25,14,geld[akt_player],1);
}
immer beide bedingungen ausgegeben werden?
schonmal danke für ne Antwort.
Ich schalt derweil die case ab und mach wieder ifs rein.
Gruß Matthias
-
öhm, da fehlen doch 2 break, oder?
-
sind die tatsächlichnotwendig??? sollte nicht case(0) eindeutig auf 0 und nichts anderes zeigen???
Sorry ich leb normalerweise in der pascalwelt und da ist prüfung auf x auch nur auf x... erklärt mir das bitte jemand aus der C-Welt
Gruß Matthias
-
Nein in C sind sie nicht notwendig. Nur wenn Du für eine Auswahl auch nur genau eine Codefolge haben willst.
Das break ist immer optional. Du als Programmier musst wissen ob es nötig ist oder auch nicht.
Manchmal kann es sinnig sein, das break wegzulassen.
Es geht auch sowas:
switch(c)
{
case 0:
case 1:
case 2:
blah();
case 3:
anderes_blah();
break;
case 4:
noch was anderes();
break;
}
-
Um das ganze nochmal ein bisschen zu erklaeren:
Das Programm BEGINNT bei dem case, welches zutrifft und ENDET beim break;
wenn also im oben genannten Beispiel c = 0 (oder auch 1 oder 2), dann wird blah(); und anderes_blah(); ausgefuehrt und am break; zur schliessenden } gesprungen. ist c = 3, dann wird anderes_blah(); ausgefuehrt. ist c = 4, dann wird noch_was_anderes(); ausgefuehrt.
Das ist sehr logisch, wenn man es mal verstanden hat. :)
-
ja OK, deswegen keine Klammern.
Da der Anfang mit der Case-Prüfung beginnt und mit break oder ende der switch beendet wird.
Etwas doof.....wenn manns anders gewohnt ist.
Oh mann jetzt kann ich massenweise breaks einfügen - nerv.
Gruß Matthias