Gibt es in C eine Möglichkeit, verschiedene Case-Labels zu durchlaufen, bei denen jedes Label eine bestimmte Operation und einige allgemeine Operationen durchführt, ohne die übliche Operation umzuschreiben? ich statt dies bedeuten:Mehrere Fälle in Switch mit Überlappungsoperationen
switch(input)
{
case A:
//do nothing
break;
case B:
data = 0x02;
output = data;
break;
case C:
data = 0x04;
output = data;
break;
case D:
data = 0x08;
output = data;
break;
default:
//do nothing
break;
}
Verwendung so etwas wie unten aber Ausgang bei 0x08 für B, C und D-Eingänge nicht fest:
switch(input)
{
case A:
//do nothing
break;
case B:
data = 0x02; //specific operation for B
case C:
data = 0x04; //specific operation for C
case D:
data = 0x08; //specific operation for D
output = data; //common operation for all B,C,D labels
default:
//do nothing
break;
}
ich brauche, wenn der Eingang B, C oder D Der Ausgang wurde anschließend 0x02, 0x04 oder 0x08 zugewiesen. Ist es möglich? Danke!
Ja, es ist möglich - benutze ein 'goto'. Ob es ratsam ist oder nicht, könnte eine andere Sache sein ... –
Ihre erste Version ist lesbar und verständlich, es ist nichts falsch daran. Der Versuch, clevere Tricks mit einer 'switch'-Anweisung auszuführen, ist fehleranfällig und nicht wert, ein paar Zeilen Code zu speichern. – acraig5075
@BJMyers Ich bevorzuge es, nicht zu verwenden, aber danke für Ihren Vorschlag – 1chenar