Uli schrieb:
> Es ist mir jetzt klar, allerdings war die
> Schreibweise für mich eher unübersichtlich.
Rechts vom "=" steht ein Ausdruck, und dessen Wert wird n zugewiesen.
Ob das unübersichtlich ist, ist eine Frage der Gewohnheit. Ich
persönlich bevorzuge die platzsparende Alternative gegenüber dem
länglichen if-else.
Sinnvoller als der Einsatz wie im Beispiel ist bei komplexeren Abfragen
wie
1 | uint8_t n = (a > 1) + (b > 2) + (c > 3);
|
2 | switch (n)
|
3 | {
|
4 | case 2:
|
5 | // Mindestens 2 Bedingungen sind erfüllt.
|
6 | ...
|
7 | }
|
In dem Fall sind Klammern um die Bedingungen erforderlich.
Bei einer einzigen Bedingung Klammern für bessere Übersichtlichkeit zu
setzen kann man machen; aber wie oben mangelnde Sprachkenntnis als
Begründung für Klammersetzung anzuführen ist einer der schlechtesten
Argumente überhaupt.
Und ob man bei meinem Beispiel über eine Zwischenvariable geht oder
1 | switch ((a > 1) + (b > 2) + (c > 3))
|
verwendet, ist natürlich dem Coding Style überlassen.
Wenn die Bedingungen komplexer sind, kann man auch auf mehrere Zeilen
aufteilen:
1 | uint8_t n_conditions = 0;
|
2 | n += bedingung_1 (wert1 + wert2 * wert3);
|
3 | n += bedingung_2 (wert3 + wert4 - wert5);
|
4 | n += bedingung_3 (wert1 * wert2 * wert4);
|
5 | switch (n) ...
|