Switch-Case

Gast #557412
Lesenswert?
• ▲
▼
Ich hab mal ne Frage ...

ich habe in meinem 8051 eine relativ große Switch-Case Anweisung (ca. 
100 Werte). Ich bekomme also einen Befehl (1 Byte) und den vergleiche 
ich in der Switch-Case anweisung und haue dann 3 Byte raus ....

switch(befehl)
{
 case 1: ...
   break;
 case 2: ...
   break;
   .
   .
 case 100: ...
   break;
}

das ist sehr unübersichtlich. Gibt es eine möglichkeit das 
Eleganter/Übersichtilcher zu lösen? Wie sieht es mit der Geschwindigkeit 
aus? Ist es da egal wie viele Case-Bedingungen man hat (z.B. in c# aufm 
pc ist es egal)

Danke!
Gast #557418
Lesenswert?
• ▲
▼
>Gibt es eine möglichkeit das
>Eleganter/Übersichtilcher zu lösen?

Tabelle, indiziert mit "befehl"?

>Wie sieht es mit der Geschwindigkeit
>aus? Ist es da egal wie viele Case-Bedingungen man hat (z.B. in c# aufm
>pc ist es egal)

In der Regel ja. Wird von Compiler in eine Sprungtabelle umgesetzt.
#557441
Lesenswert?
• ▲
▼
Der switch selektiert für jeden Entscheidungswert ein separates Stück 
Code.

Wenn sich dieser Codeschnipsel nur durch ein paar Parameter 
unterscheiden, dann brauchst Du keinen switch, sondern Du schreibst den 
Ausgabecode nur einmal und besorgst Dir die Werte aus einem Array, in 
das Du mit befehl indizierst:

struct {
   char   w1;
   char   w2;
   char   w3;
   ...
} AusgabeArray[100] = {
  { 1, 5, 3 },  // befehl 0
  { ........},  // befehl 1
   ...
  { ........}   // befehl 100
};

  Ausgabe(AusgabeArray[befehl].w1);
  Ausgabe(AusgabeArray[befehl].w2);
  Ausgabe(AusgabeArray[befehl].w3);

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.