if else

 

Die einfache Gabelung eines Programmflusses in zwei Richtungen erfolgt mittels der if/else-Struktur.

Die allgemeine Syntax lautet:

 

if( expression ) statement

 

bzw. in erweiterter Form mit else-Zweig:

 

if ( expression ) statement

else statement

 

Untersuchen wir ein erstes Beispiel:

 

if ( i > 0 )

{

    a = b;

    c = d;

}

else

{

    a = b + 1;

    c = d + 1;

}

 

Hier wird aufgrund des Ausdrucks i>0 eine Entscheidung getroffen. Ist dieser Ausdruck "wahr", dann wird der if-Zweig ausgeführt, ist der Ausdruck "falsch", dann wird der else-Zweig, falls vorhanden, ausgeführt.

Der else-Zweig ist optional. Eine if-Kontrollstruktur ohne else könnte z.B. folgendes sein:

 

if ( i > 0 )

{

    a = b;

}

 

Ist der Ausdruck  i>0 "wahr", dann wird der if-Zweig ausgeführt, ansonsten wird er nicht ausgeführt.

Man kann die geschweiften Klammern in diesem einfachen Fall auch weglassen:

 

if ( i > 0 ) a = b;

 

Was ist das?

 

if ( i ) a = b;

 

Dies ist ein oft anzutreffender Fall, der Anfänger irritieren kann. Gehen wir logisch vor. Wenn i ungleich 0 ist, ist der Ausdruck in den Klammern "wahr". Wenn der Ausdruck in den Klammern wahr ist, wird die Anweisung bzw. der Anweisungsblock im if-Zweig ausgeführt.

 

Wollen wir das Gegenteil, dann schreiben wir:

 

if ( i == 0 ) a = b;

 

oder negiert:

 

if ( !i ) a = b;

 

Achten Sie unbedingt auf das doppelte Gleichheitszeichen, wenn die Prüfung auf Gleichheit gemeint ist.

Das einfache Gleichheitszeichen ist der Zuweisungsoperator.

 

Was passiert, wenn wir das doppelte Gleichheitszeichen vergessen?

 

if ( i = 0 ) a = b;

 

Hier wird i der Wert 0 zugewiesen. Damit ist i gleich 0, und der Klammerausdruck wird  "unwahr".  Also wird der if-Zweig nicht ausgeführt. Das ist genau das Gegenteil dessen, was wir beabsichtigen.  Solche Fälle kann der Compiler nicht als Fehler erkennen, denn dies ist logischer Fehler, und dafür ist der Programmierer zuständig.

 

Es ist also Ihre Aufgabe, derartige Programmfehler zu vermeiden!


Übersicht Keywords C++