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?
    🙂


Anmelden zum Antworten