Die if .. else Anweisung beschreibt eine vollständige Alternative. Die Syntax ist:
if ( Ausdruck )
Anweisung1;
[else
Anweisung2;]
Der else Teil kann entfallen, man erhält dann eine bedingte Anweisung. Wenn 'Ausdruck' wahr ist (d.h. Wert ungleich Null ) wird 'Anweisung1' abgearbeitet. Gibt es eine else Anweisung, wird 'Anweisung2' abgearbeitet, wenn 'Ausdruck' gleich Null ist
(1)
int NumberOfUsers;
.
.
if( NumberOfUsers == 25 )
{ /* kein else Teil */
printf( "There are already enough users. Try later.\n" );
return ERROR;
}
.
.
(2) if( a >=b ) /* vollständige Alternative */
larger = a;
else
larger = b;
Sehen Sie sich dieses Programmfragment an:
if( p == 1 )
if( q == 2 ) r = p * 2 + q;
else q = q * 2 + p;
Da der else Teil entfallen kann, wäre diese Anweisung mehrdeutig (gehört das else zum ersten oder zum zweiten if?). In C gilt deshalb, daß eine else Anweisung immer zur nächsten if Anweisung gehört. Im Beispiel gehört der else Teil deshalb zu 'if (q==2)'. Der Quellcode wird besser lesbar, wenn man Klammern setzt.
if( p == 1 )
{
if( q == 2 ) r = p * 2 + q;
else r = q * 2 + p;
}
Mit Klammern kann man auch eine andere Interpretation festlegen.
/* hier gehört else Teil zu (p == 1) */
if( p == 1) {
if( q == 2 ) r = p * 2 + q;
}
else r = q * 2 + p;
Alternativen kann man beliebig verschachteln, eine Mehrfachauswahl sieht in C so aus:
if( Ausdruck1 )
Anweisung1;
else if( Ausdruck2 )
Anweisung2;
else if( Ausdruck3 )
Anweisung3;
.
.
else
AnweisungN;