atari-home.de - Foren

Software => Coding => Thema gestartet von: matashen am Fr 27.02.2009, 22:04:21

Titel: wieder mal ein C-Snibble und ne Frage dazu
Beitrag 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
Titel: Re: wieder mal ein C-Snibble und ne Frage dazu
Beitrag von: afalc060 am Fr 27.02.2009, 22:16:06
öhm, da fehlen doch  2 break, oder?
Titel: Re: wieder mal ein C-Snibble und ne Frage dazu
Beitrag von: matashen am Fr 27.02.2009, 22:21:49
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
Titel: Re: wieder mal ein C-Snibble und ne Frage dazu
Beitrag von: simonsunnyboy am Fr 27.02.2009, 22:31:26
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;
}
Titel: Re: wieder mal ein C-Snibble und ne Frage dazu
Beitrag von: guest2291 am Sa 28.02.2009, 01:04:59
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. :)
Titel: Re: wieder mal ein C-Snibble und ne Frage dazu
Beitrag von: matashen am Sa 28.02.2009, 01:14:01
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