ein Kapitel zurück                                           ein Kapitel weiter

Sie haben wohl schon langsam gemerkt das es in C viele Operatoren gibt. Das macht die Sprache zwar schwerer zum lesen aber auch schneller und effektiver zum Programmieren. Wenn sie die meisten erst mal kennen gelernt haben werden sie sie zu schätzen wissen. Der Operator '&&' steht für eine UND-Verknüpfung und der Operator '||' steht für eine ODER-Verknüpfung. Hört sich wieder kompliziert an ist es aber nicht. Nehmen wir doch gleich als Beispiel das Programm das sie in dem Kapitel '! - Operator' kennen gelernt haben. Wir wollen zwei Zahlen Multiplizieren und überprüfen ob eine der beiden Zahlen 0 ist....

/*Download:or.c*/
#include <stdio.h>

int main()
{
int a,b;

printf("Zahl 1 : ");
scanf("%d",&a);

printf("Zahl 2 : ");
scanf("%d",&b);

if((!a) || (!b))
printf("Abbruch: Eine Zahl ist 0\n");

else
printf("%d * %d = %d\n",a,b,a*b);
return 0;
}







Und schon haben wir aus drei Kontrollstrukturen zwei gemacht. Hier die Erklärung zu...

if((!a) || (!b))

Sieht kryptischer aus als es ist. Wieder wörtlich : Ist ungleich a (a==0) ODER (||) ist ungleich b (b==0). Das heißt jetzt wenn eine dieser beiden Bedienungen wahr ist, also entweder ist a oder b Null, dann wird ausgegeben dass eine Zahl den Wert 0 besitzt. Und somit wird nicht gerechnet.

Sollte die erste Bedienung (!a) schon wahr sein wird die zweite Bedienung (!b) gar nicht mehr überprüft.

Kommen wir zur UND-Verknüpfung. Dazu nehmen wir wiederum das Programm von oben...

/*Download:and.c*/
#include <stdio.h>

int main()
{
int a,b;

printf("Zahl 1 : ");
scanf("%d",&a);

printf("Zahl 2 : ");
scanf("%d",&b);

if((a) && (b))
printf("%d * %d = %d\n",a,b,a*b);

else
printf("Abbruch: Eine Zahl ist 0\n");
return 0;
}








Nun ist auch das Programm wieder einfacher zu lesen. Die Erklärung...

if((a) && (b))

Wir überprüfen hier ob a einen Wert hat, also nicht 0(unwahr) ist UND ob b einen Wert hat und ebenso nicht 0 ist. Hier MÜSSEN beide Bedienungen wahr sein. Sobald ein Wert 0(unwahr) geht es weiter zur 'else' - Anweisung und gibt aus das eine Zahl den Wert 0 hat.

Ein Fehler der häufig gemacht wird ist das man '&' anstatt '&&' schreibt. Das Programm wird meistens normal weiterlaufen da der Operator '&' alleinstehend auch ein Operator ist. Wieso das ist doch der Adress-Operator sagen sie? Nun machen sie sich jetzt noch keine Kopf darüber bevor ich sie noch verwirre. Einfach merken...

UND = &&
ODER = ||


Hierzu noch ein Programmablaufplan, zum Vergleich des && und || Operators....

&& - Operator (PAP) :
&& - Operator




|| - Operator (PAP) :
|| - Operator


Es sollte aber nicht der Eindruck entstehen das nur 2 Bedienungen miteinander Überprüft werden können...

/*Download:choice.c*/
#include <stdio.h>

int main ()
{
char auswahl;
printf("Wieviel Bits haben 2 Bytes?\n\n");
printf("a.) 8 Bits\tb.)16 Bits\tc.)12 Bits\td.)15 Bits\n\n");

printf("Ihre Auswahl : ");
scanf("%c",&auswahl);

if( (auswahl == 'a') || (auswahl == 'c') || (auswahl == 'd') )
printf("Leider falsch!! Richtig wäre b.) 16 Bits\n");
else if(auswahl == 'b')
printf("Richtig!!!!\n");
else
printf("\"%c\" ?!?! Falsche Eingabe!!!\n",auswahl);

return 0;
}







Sie können mit dem && - Operator und dem || - Operator unzählig viele Bedienungen miteinander Prüfen. Nur Übertreiben sie es damit nicht damit der Code noch lesbar bleibt.

ein Kapitel zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf