8.5 Logisches UND (&&) – logisches ODER (||)
Sie haben sicher schon bemerkt, dass es in C viele Operatoren gibt. So ist die Sprache zwar unter Umständen schwerer lesbar, aber auch schneller, vielseitiger und effektiver zu programmieren. Sobald Sie die Operatoren kennengelernt haben, werden Sie diese sehr zu schätzen wissen.
Mit dem logischen ODER-Operator (||) werden Operanden so miteinander verknüpft, dass der Ausdruck »wahr« zurückliefert, wenn mindestens einer der Operanden wahr ist.
if( (Bedingung1) || (Bedingung2) ) /* mindestens eine der Bedingungen ist wahr */ else /* keine Bedingung ist wahr */
Sehen Sie sich dazu in Abbildung 8.6 den Programmablaufplan des logischen ODER-Operators an.
Abbildung 8.6 Der Programmablaufplan des logischen ODER-Operators
Jetzt wird der Operator in dem Programm eingesetzt, das Sie beim logischen NICHT-Operator zuvor verwendet haben:
/* logic_or.c */ #include <stdio.h> int main(void) { int zahl1, zahl2; printf("Bitte Zahl 1 eingeben: "); scanf("%d", &zahl1); printf("Bitte Zahl 2 eingeben: "); scanf("%d", &zahl2); if( (!zahl1) || (!zahl2) ) printf("Error: Einer der Werte ist gleich 0!!! \n"); else printf("%d/%d = %f \n", zahl1, zahl2, (float)zahl1/zahl2); return 0; }
Die if-Konstruktion des Programms sieht so aus:
if( (!zahl1) || (!zahl2) )
In Worten ausgedrückt, sähe das etwa folgendermaßen aus: Ist der Wert zahl1 gleich 0 ODER der Wert zahl2 gleich 0, dann ist die Bedingung wahr, und Sie haben eine 0 eingegeben. Sollte die erste Bedingung (!zahl1) schon wahr sein, so wird die zweite Bedingung (!zahl2) gar nicht mehr überprüft: Dies können Sie auch am Programmablaufplan erkennen.
Analog verhält es sich mit dem logischen UND-Operator (&&). Das Ergebnis dieser verknüpften Operanden gibt nur dann »wahr« zurück, wenn alle Operanden wahr sind. Den Programmablaufplan des logischen UND-Operators sehen Sie in Abbildung 8.7.
Abbildung 8.7 Programmablaufplan des logischen UND-Operators
Wiederum folgt zur Verdeutlichung ein Programmbeispiel:
/* logic_and.c */ #include <stdio.h> int main(void) { int zahl; printf("Geben Sie einen Wert zwischen 10 und 20 ein: "); scanf("%d", &zahl); if( (zahl >= 10) && (zahl <= 20) ) printf("Danke für die Eingabe! \n"); else printf("Falsche Eingabe! \n"); return 0; }
In der Zeile
if( (zahl >= 10) && (zahl <= 20) )
prüfen Sie, ob die eingegebene Zahl einen Wert zwischen 10 und 20 besitzt. In Worten: Ist es wahr, dass die Zahl größer oder gleich 10 ist UND die Zahl auch kleiner gleich 20 ist, dann ist die Bedingung wahr.
Natürlich können Sie mit dem &&-Operator und dem ||-Operator weitere Bedingungen miteinander verknüpfen. Allerdings sollten Sie dabei die Lesbarkeit eines solchen Konstrukts im Auge behalten.
Hinweis |
Als alternative Schreibweise für die logischen Operatoren && und || können Sie seit dem C99-Standard auch die Makros and und or verwenden, die beide in der Headerdatei <iso646.h> definiert sind. |
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.