8.4 Der !-Operator (logischer Operator) 

Den logischen !-Operator (NOT-Operator) haben Sie eben schon kennengelernt. Dieser Operator wird oft falsch verstanden, weswegen ihm ein eigenes Kapitel gewidmet ist. Der !-Operator ist ein unärer Operator und kann einen Wert bzw. eine Bedingung negieren. Dies bedeutet, er kann aus »wahr« »falsch« machen und umgekehrt. Dazu ein Programmbeispiel:
/* logic_not1.c */
#include <stdio.h>
int main(void) {
int checknummer;
printf("Bitte geben Sie Ihren Code-Schlüssel ein: ");
scanf("%d", &checknummer);
if( ! (checknummer == 4711) ) {
printf("Error - Falscher Code-Schlüssel \n");
}
else {
printf("Success - Login erfolgreich \n");
}
return 0;
}Zur Erklärung der if-Bedingung im Programm:
if( !(checknummer == 4711) )
Hier wird der Ausdruck zwischen den Klammern geprüft. Das bedeutet, der !–Operator überprüft den Wert in der Klammer und gibt 1 (wahr) zurück, falls der Wert in der Klammer nicht 4711 ist. Ist der Wert aber gleich 4711, dann wird 0 (falsch) zurückgegeben. Das Programm fährt daraufhin mit der else-Verzweigung fort und gibt aus, dass Sie die richtige Zahl eingegeben haben.
Tabelle 8.2 zeigt die verschiedenen Verwendungsmöglichkeiten.
| Anweisung | == | Anweisung |
if(a != 0) |
gleich |
if(a) |
if(a == 0) |
gleich |
if(!a) |
if(a > b) |
gleich |
if(! (a <= b) ) |
if( (a-b) == 0) |
gleich |
if(! (a-b) ) |
Hier sehen Sie ein weiteres Programmbeispiel zur Verdeutlichung:
/* logic_not2.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)
printf("Error: Der Wert ist gleich 0!! \n");
else if(!zahl2)
printf("Error: Der Wert ist gleich 0!! \n");
else
printf("%d/%d = %f \n", zahl1, zahl2, (float) zahl1/zahl2);
return 0;
}Sie vermeiden mit diesem Programm eine Division durch 0. Sollte also keine der beiden Zahlen dem Wert 0 entsprechen, wird mit (float) zahl1/zahl2 eine Division durchgeführt. Sie verwenden hier ein explizites Type-Casting, damit der Wert nach dem Komma nicht einfach abgeschnitten wird.
| Hinweis |
|
Als alternative Schreibweise für den logischen !-Operator können Sie seit dem C99-Standard auch das Makro not verwenden, das in der Headerdatei <iso646.h> definiert ist. Die Schreibweise if( !a ) entspricht somit exakt if( not a ). |
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.




Jetzt bestellen



