Gast
#4792591
Hallo, ich habe folgendes gegeben:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
Wann wird nun was ausgeführt? Und warum fehlt "break" zwischen den einzelnen case-Anweisungen? Welchen Sinn soll das haben? mfg
|
Anzeige
|
switch case ohne break und Befehl, Programmablauf?
Gast
#4792591
Hallo, ich habe folgendes gegeben:
Wann wird nun was ausgeführt? Und warum fehlt "break" zwischen den einzelnen case-Anweisungen? Welchen Sinn soll das haben? mfg
Gast
#4792597
Hallo Henni, henni schrieb: > case PPM_CTRL_TYPE_CURRENT_NOREV: > case PPM_CTRL_TYPE_DUTY_NOREV: > case PPM_CTRL_TYPE_PID_NOREV: das ist eine ODER Verknüfung. ms
Gast
#4792598
henni schrieb: > Sinn soll das haben? eine ODER platzsparend bauen.
Gast
#4792599
> Wann wird nun was ausgeführt? Das hängt von config.ctrl_type ab. > Welchen Sinn soll das haben? Duplicate code vermeiden, Struktur und Übersichtlichkeit verbessern.
Gast
#4792604
henni schrieb: > Wann wird nun was ausgeführt? Wenn config.ctrl_type eines der folgenden ist: case PPM_CTRL_TYPE_CURRENT_NOREV oder PPM_CTRL_TYPE_DUTY_NOREV oder PPM_CTRL_TYPE_PID_NOREV, dann wird das hier ausgeführt: servo_val += 1.0; servo_val /= 2.0; das ist äquivalent zu folgendem Code:
Ist config.ctrl_type keines der drei oben genannten, wird nichts gemacht. > Und warum fehlt "break" zwischen den einzelnen case-Anweisungen? Welchen > Sinn soll das haben? Eben daß der Programmablauf hindurchfallen kann. Das macht man bei Statemachines ganz gerne, wenn mehrere Zustände dieselben Befehle teilen. Typischerweise hätte man dann z.B. nach case PPM_CTRL_TYPE_CURRENT_NOREV noch ein paar Befehle, dann kein break, und dann fällt man auf die gemeinsamen weiteren Befehle der Zustände. Etwa sowas hier:
Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|