oder noch einfacher
@W_Horm
Du merkst schon: In C ist manchmal weniger einfach mehr.
Bei
1 | if( w )
|
2 | {
|
3 | ...
|
4 | }
|
5 | else
|
6 | {
|
7 | ...
|
8 | }
|
gibt es kaum Möglichkeiten für Tippfehler in den Bedingungen. Bist du
aber explizit
1 | if( w != 0 )
|
2 | {
|
3 | ...
|
4 | }
|
5 | if( w == 0 )
|
6 | {
|
7 | ...
|
8 | }
|
hast du jede Menge Potential für Tippfehler oder sonstige Möglichkeiten
für fehlerhafte Abfragen. Die erste Version (die mit dem else) betont
augenscheinlich, dass der erste Codeabschnitt und der zweite
Codeabschnitt nur von einer einzigen Bedingung abhängen. Die zweite
Variante ist da nicht so offensichtlich. ALs Leser muss ich mich erst
einmal davon überzeugen, dass die eine Bedingung tatsächlich das genaue
Gegenteil von der anderen ist. Bei einem else brauch ich das nicht tun,
das else impliziert das ganz von alleine.
Und das andere: C erlaubt dir ausdrücklich die Verwendung der Regel: 0
wird als logisch FALSE gewertet und alles andere ist automatisch logisch
TRUE. Diese Regelung erlaubt dir, Bedingungen so zu formulieren, dass du
Vergleiche auf Gleichheit bzw Ungleichheit ganz ohne Vergleichsoperation
formulieren kannst. Und damit auch ohne die beliebte Anfängerfalle, dass
ein einzelnes = eine Zuweisung und kein Vergleich ist.