if
eingeleitet, auf das der kontrollierende Ausdruck (die Bedingung) in Klammern
folgt. Ist der Wert dieses Ausdrucks nicht binär 0, so wird die
folgende Anweisung ausgeführt, ansonsten wird sie übersprungen.
Statt einer einfachen Anweisung kann auch, wie überall, ein Block (eine von
{}
eingeschlossene Folge von Anweisungen) oder wiederum eine
Kontrollstruktur stehen.
Auf diese Anweisung kann eine weitere, ducrh das Schlüsselwort
else
eingeleitete Anweisung (Block,Kontrollstruktur) folgen,
die sog. Alternative stehen. Diese wird immer dann ausgeführt, wenn
die andere Anweisung nicht ausgeführt wurde, i.e. wenn der Wert der
Bedingung 0 ( = in C logisch falsch) ist.
Beispiele:
if (i > 10000) printf("I ist zu gross\n"); ... ... if (a < 0) a = -a; ... ... if(x == y) printf("X und Y sind gleich\n"); else printf("X und Y sind ungleich\n");
if
-Konstruktionen können auch ,,verschachtelt`` werden:
if (a < b) if (c > d) printf("a ist kleiner als b, c ist groesser als d\n"); else printf("a ist kleiner als b, c ist kleiner oder gleich d\n"); else printf("a ist groesser oder gleich b, von c und d wissen wir nichts\n"); .. .. if (a > b) printf("a ist groesser"); else if (a < b) printf("a ist kleiner"); else printf("a und b sind gleich");
Bei diesen Verschachtelungen ist zu beachten: jedes else
bezieht sich immer auf das zuletzt genannte if
. Dies sollte
sich auch im Layout wiederspiegeln.
Das letztgenannte Beispiel, if
-Abfrage im else
-zweig
gibt es in dieser Form sehr häufig und auch mit relativ tiefer
Verschachtelung. In anderen Sprachen gibt es dafür sogar extra eine
elsif
-Konstruktion. In der Tat wird ja dabei, im Gegensatz zu
der EInrückung, keine Tiefenstruktur aufgebaut. Üblicherweise
schreibt man dieses Beispiel in C dann auch so:
if (a > b) printf("a ist groesser"); else if (a < b) printf("a ist kleiner"); else printf("a und b sind gleich");
um diesem Umstand Rechnung zu tragen.