Forum: Mikrocontroller und Digitale Elektronik Frage zu erweiterten Verwendung der switch-case


von Johannes (Gast)


Lesenswert?

Eine switch-case sieht ja nomalerweise so aus.

 switch(x)
 {
  case 210: l = 1;
  break;
  .
  .
  .
  .

 }

Wie kann ich jetzt in einer switch-case etwas zwischen zwei werten 
"vergleichen".
Also x zwischen 10 und 20.

mfg

PS. So sieht das in Basic aus.
    Case 10 To 20: l = 1

von stibe (Gast)


Lesenswert?

if(i>10&&i<20){

}

von tom (Gast)


Lesenswert?

case 11:
 // anweisungen
 break;
case 12:
 // anweisungen
 break;

 ...
case 19:
 //anweisungen
 break;

von Karl H. (kbuchegg)


Lesenswert?

Johannes schrieb:

> Also x zwischen 10 und 20.

Gar nicht.
Ein case in C geht immer nur auf einen konstanten Wert.
Wenn dein zu testender Bereich klein ist, kannst du die Fall-through 
Lösung benutzen

  switch( x ) {
    case 0:
      mach was;
      break;

    case 5:
      mach was anderes;
      break;

    case 10:
    case 11:
    case 12:
      mach was für 10, 11, 12
      break;
  }

aber abgesehen davon, benutzt du dann mit einem switch-case ganz einfach 
das falsche Werkzeug und solltst auf if else-if Ketten ausweichen.

von Martin F. (martinf)


Lesenswert?

Du könntest auf x ne Funktion anwenden, die den Wertebereich 
einschränkt, um mit weniger cases auszukommen.

von stibe (Gast)


Lesenswert?

wiso muss es denn switch sein!?

if(i>10&&i<20){

}

else{
}

macht genau das

von Klaus W. (mfgkw)


Lesenswert?

Der gcc kann das aber als Erweiterung (also nicht portabel gegenüber
anderen Compilern):
1
  switch( i )
2
  {
3
    case 0:
4
      puts( "nix" );
5
      break;
6
7
    case 1 ... 5:
8
      puts( "1 bis 5" );
9
      break;
10
11
    case 6:
12
      puts( "6" );
13
      break;
14
15
    default :
16
      puts( "?" );
17
      break;
18
  }

Siehe http://gcc.gnu.org/onlinedocs/gcc/Case-Ranges.html#Case-Ranges

von Johannes (Gast)


Lesenswert?

Ich dachte nur es könnte vll. mit switch gehen würde übersichtlicher 
aussehen.
Denn in Basic und php habe ich das schon gesehen.

Danke für eure Hilfe. Dann werde ich es doch mit if aufbauen.

von Johannes (Gast)


Lesenswert?

@Klaus: Ah hab dein post ganz übersehen. Vielen vielen DANK.

von Klaus W. (mfgkw)


Lesenswert?

Bitteschön.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.