Die if-Abfrage

von: Ansgar Schiffler, 2005

zurück zu 'Die Programmiersprache C++'

 

Bei jeder if-Abfrage wertet der Compiler den in Klammern stehenden Ausdruck aus. Falls dieser Ausdruck eine Bedingung ist, die erfüllt ist, ist das Ergebnis der Auswertung eine 1 ("true").

Falls dieser Ausdruck eine Bedingung ist, die nicht erfüllt ist, ist das Ergebnis der Auswertung eine 0 ("false"). Wenn die Auswertung des in Klammern stehenden Ausdrucks eine 0 ergibt, wird/werden die folgende(n) Anweisung(en) nicht ausgeführt. Anderenfalls wird/werden sie ausgeführt.

Beispiele: 

a = 5; b = 10;

if (a = = b) a++;  

Die Auswertung der Bedingung ergibt eine 0, da die Bedingung nicht erfüllt ist, die Anweisung wird nicht ausgeführt. a hat weiterhin den Wert 5.

if ( a != b) a++;

Die Auswertung der Bedingung ergibt eine 1, da die Bedingung erfüllt ist, die Anweisung wird ausgeführt. a wird der Wert 6 zugewiesen.

Kann die Auswertung des Ausdrucks in Klammern immer nur 0 oder 1 ergeben?

Dies ist der Fall, wenn es sich um eine Bedingung handelt. Diese ist entweder erfüllt (1) oder sie ist nicht erfüllt (0).

Jedoch dürfen in diesen Klammern beliebige Ausdrücke stehen, solange sie auswertbar sind. Die auf die if-Abfrage folgende(n) Anweisung(en) werden nur dann nicht ausgeführt, wenn die Auswertung des Ausdrucks in Klammern eine 0 ergibt. Wenn die Auswertung eine beliebige andere Zahl ergibt, wird dies als "true" gewertet

 

Beispiele:  

a = 5; b = 7; c = 2;     if (a) a += 7;

Die Auswertung des Ausdrucks ergibt 5, die Anweisung wird ausgeführt. a wird der Wert 12 zugewiesen.

a = 5; b = 7; c = 2;    if (a - b + c) a += 7;

Die Auswertung des Ausdrucks ergibt 0, die Anweisung wird nicht ausgeführt.  a hat weiterhin den Wert 5.

Typische Fehler  

1.)   x = 20;    if ( x = 1) x++;

x = 1 ist keine Abfrage, sondern eine Zuweisung. Es wird also der Variablen x der Wert 1 zugewiesen. Obwohl x = 1 keine Abfrage ist, wird dieser Ausdruck ausgewertet. Das  Ergebnis der Auswertung ist 1, also "true". Somit wird die Anweisung ausgeführt und x wird inkrementiert. Die Variable x hat dann den Wert 2.

2.)  x = 20; if (x = = 10); x++;

Die Abfrage x = = 10 ergibt 0 ("false"), die Anweisung wird nicht ausgeführt. Jedoch gehört die Anweisung x++ nicht zu der if-Abfrage. Zur if-Abfrage gehört eine Leeranweisung, weil aus Versehen hinter die if-Abfrage ein ';' gesetzt wurde. Ob diese Leeranweisung ausgeführt wird, ist natürlich bedeutungslos. Die Anweisung x++; wird immer ausgeführt unabhängig davon, was die Auswertung der if-Anweisung ergibt. Es wird der Variablen x der Wert 21 zugewiesen.

zurück zu 'Die Programmiersprache C++'