Die logischen Verknüpfungen in C [] (Die logischen Verknüpfungen in C), Lektion, Seite 722987
https://www.purl.org/stefan_ram/pub/logische_operatoren_c (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
C-Kurs

Die logischen Verknüpfungen in C 

Der Oder-Operator »||«

Das Zeichen »|« heißt „senkrechter Strich“.

Lexikalische Einheiten

Der Operator »||« ist eine lexikalische Einheit. Auch alle weiteren Operatoren dieses Kapitels, die aus zwei direkt nebeneinander geschriebenen Zeichen bestehen, sind jeweils eine lexikalische Einheit. (Dies wird im folgenden nicht mehr bei jedem Operator einzeln angegeben werden.)

Vereinfachte Syntax

vereinfachte Syntax
Ausdruck
.----------. .--. .----------.
--->| Ausdruck |--->( || )-->| Ausdruck |--->
'----------' '--' '----------'

Wenn keine Verwechslungen zu befürchten sind, kann man diese Operator auch als „Oder“ bezeichnen. Sind Verwechslungen mit ähnlichen Operatoren zu befürchten, so muß er genauer als „bedingter Oder-Operator“ oder „zwei senkrechte Striche“ bezeichnet werden.

Die mathematische Schreibweise für die Oder-Verknüpfung ist ‹› (das Zeichen ähnelt einem kleinen V, vom lateinischen "vel" [„oder“]).

In der mathematischen Logik ist die Oder-Verknüpfung zweier Wahrheitswerte genau dann wahr, wenn mindestens einer der beiden Wahrheitswerte (der linke oder  der rechte) wahr ist. Sie ist also nur dann falsch, wenn beide Wahrheitswerte falsch sind

Die mathematische Oder-Verknüpfung
x       y        x  y

falsch  falsch   falsch
falsch wahr wahr
wahr falsch wahr
wahr wahr wahr
Priorität und Assoziativität der bisher behandelten Operatoren
   ()                   Eingeklammerter Ausdruck
() Aufrufoperator
+ - Unaere vorangestellte Operatoren
L * / Multiplikation, Division
L + - Addition, Subtraktion
L || Oder
R = Zuweisung, Anweisungsausdruck

Typanforderungen

Die Operanden des Operators »||« können jeden der bisher vorgestellten Typen haben.

Semantik

Bei der Auswertung einer || -Anwendung wird zunächst der linke Operand ausgewertet.

Wenn der linke Operand nicht den Wert 0 hat, dann ist der Wert des gesamten Ausdrucks 1, und der rechte Operand wird nicht ausgewertet.

Wenn der linke Operand den Wert 0 hat, dann ist der Wert des gesamten Ausdrucks 1, wenn der der Wert des rechten Operanden nicht 0 ist.

In der folgenden Tabelle steht »1« in den ersten beiden Spallten für jeden Wert, der nicht 0 ist.

Tabelle
x    y    x || y

1         1

0    0    0
1 1 1
main.c
#include <stdio.h>

int main( void )
{ printf( "%d\n", 0 || 0 );
printf( "%d\n", 0 || 1 );
printf( "%d\n", 1 || 0 );
printf( "%d\n", 1 || 1 ); }
stdout
0
1
1
1
Anwendungsbeispiel für ||
int isletdig( int const c ){ return isalpha( c )|| isdigit( c ); }
Zeichen c  ist Buchstabe oder  Ziffer

Der Und-Operator »&&«

Das Zeichen »&« heißt „kommerzielles Und“.

Vereinfachte Syntax

Ausdruck
.----------. .--. .----------.
--->| Ausdruck |--->( && )-->| Ausdruck |--->
'----------' '--' '----------'

Wenn keine Verwechslungen zu befürchten sind, kann man diese Operator auch als „Und“ bezeichnen. Sind Verwechslungen mit ähnlichen Operatoren zu befürchten, so muß er genauer als „bedingter Und-Operator“, „Doppel-Und“ oder sogar als „doppeltes kommerzielles Und“ bezeichnet werden.

Die mathematische Schreibweise für die Und-Verknüpfung ist ‹› (das Zeichen ähnelt einem umgedrehten kleinen V).

In der mathematischen Logik ist die Und-Verknüpfung zweier Wahrheitswerte genau dann wahr, wenn beide Wahrheitswerte (der linke und  der rechte) wahr sind.

Die mathematische Und-Verknüpfung
x       y       x  y

falsch  falsch  falsch
falsch wahr falsch
wahr falsch falsch
wahr wahr wahr
Priorität und Assoziativität der bisher behandelten Operatoren
   ()                   Eingeklammerter Ausdruck
() Aufrufoperator
+ - Unaere vorangestellte Operatoren
L * / Multiplikation, Division
L + - Addition, Subtraktion
L && Und
L || Oder
R = Zuweisung

Typanforderungen

Die Operanden des Operators »&&« können jeden der bisher vorgestellten Typen haben.

Semantik

Bei der Auswertung einer || -Anwendung wird zunächst der linke Operand ausgewertet.

Wenn der linke Operand den Wert 0 hat, dann ist der Wert des gesamten Ausdrucks 0, und der rechte Operand wird nicht ausgewertet.

Wenn der linke Operand nicht den Wert 0 hat, dann ist der Wert des gesamten Ausdrucks 1, wenn der der Wert des rechten Operanden nicht 0 ist.

In der folgenden Tabelle steht »1« in den ersten beiden Spalten für jeden Wert, der nicht 0 ist.

Tabelle
x   y   x && y

0       1

1   0   0
1 1 1
main.c
#include <stdio.h>

int main( void )
{ printf( "%d\n", 0 && 0 );
printf( "%d\n", 0 && 1 );
printf( "%d\n", 1 && 0 );
printf( "%d\n", 1 && 1 ); }
stdout
0
0
0
1
Anwendungsbeispiel für &&
int isinrange( int const i, int const min, int const top ){ return min <= i && i < top; }

isinrange( x, 0, 7 )
i ist zwischen 0 (einschließlich) und  7 (ausschließlich)

Übungsaufgaben

/    = Und-Funktion
Definieren Sie eine int-Funktion »und« für zwei int-argumente, die nur dann »1« ergibt, wenn beide Argumente ungleich 0 sind, und sonst 0.
/    = Oder-Funktion
Definieren Sie eine int-Funktion »oder« für zwei int-argumente, die nur dann »0« ergibt, wenn beide Argumente gleich 0 sind, und sonst 1.

Zusatzaufgaben *

/    + Und-Funktion (Variante)
Definieren Sie eine int-Funktion »und« für zwei int-argumente, die nur dann »1« ergibt, wenn beide Argumente ungleich 0 sind, und sonst 0, ohne dabei den Operator »&&« zu verwenden.
/    + Oder-Funktion (Variante)
Definieren Sie eine int-Funktion »oder« für zwei int-argumente, die nur dann »0« ergibt, wenn beide Argumente gleich 0 sind, und sonst 1, ohne dabei den Operator »||« zu verwenden.

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram722987 stefan_ram:722987 Die logischen Verknüpfungen in C Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd722987, slrprddef722987, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/logische_operatoren_c