Bei switch: von -> bis
-
Hi,
kann man eigentlich bei switch-Kontrollstrukturen auch Dimensionen angeben?z.B.:
switch(5) { case 1-5: break; case 50-1000: break; default: break; }
-
Nein, kann man nicht - nur einzelne Werte. Für ausreichend kleine Bereiche kannst du aber mehrere case-Marken zusammenfassen:
switch(i) { case 1: case 2: case 3: case 4: case 5: ... break; }
(für große Bereiche wie 50..1000 funktioniert das theoretisch auch, ist aber nicht mehr praktikabel - da wäre vielleicht eine Umrechnungsfunktion hilfreich, um jeden Zahlenbereich auf eine Nummer abzubilden)
-
Bei deinem Problem wäre wohl das gute alte
if (i>=1 || i<=5)
else if ...die sinnvollste Lösung.
-
Der gcc versteht als Erweiterung folgendes:
switch(wert) { case 3 ... 5: break; case 9 ... 10: break; default: }
Ist aber nicht ansi-c.
-
Korhil schrieb:
if (i>=1 || i<=5)
if (i>=1 [b]&&[/b] i<=5)
-
und oder ? schrieb:
Korhil schrieb:
if (i>=1 || i<=5)
if (i>=1 [b]&&[/b] i<=5)
Hast recht, hab's heut morgen wohl ein wenig eilig gehabt. Hab da gar nicht drauf geachtet.
-
Läßt sich natürlich auch kombinieren:
switch(wert){ case 1: ... case 2: ... case 3: ... default: if (wert >=4 && wert <= 1000){ }else{ } }
Bei der Sortierung der cases sollte natürlich auch auf die Performanz geachtet werden. Wenn die denn relevant ist.
-
Fellhuhn schrieb:
Läßt sich natürlich auch kombinieren:
switch(wert){ case 1: ... case 2: ... case 3: ... default: if (wert >=4 && wert <= 1000){ }else{ } }
Bei der Sortierung der cases sollte natürlich auch auf die Performanz geachtet werden. Wenn die denn relevant ist.
deswegen kannste dir auch den vergleich wert>=4 sparen.
aber meinst du wirklich, dass die anordnung der cases im code einfluss auf die geschwindigkeit hat?