Wahrheitswerte in C (Wahrheitswerte in C), Lektion, Seite 722986
https://www.purl.org/stefan_ram/pub/wahrheitswerte_c (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
C-Kurs

Prädikate in C 

Wie schon behandelt wurde, werden Buchstaben in C  durch Zahlen dargestellt. Das Zeichen »A« wird oft durch die Zahl 65 dargestellt.

Zeichentabelle (Ausschnitt)

Zahl Zeichen Beschreibung Buchstabe?

64 @  Das kommerzielle A Nein
65 A  Das große A (Majuskel) Ja

Eine Aussage ist ein Satz, der wahr oder falsch sein kann. Der Ausdruck »isalpha( 65 )« ist die C -Schreibweise für die Aussage „65 ist die Kennzahl eines Buchstabens.“ Wenn der Wert von »isalpha( 65 )« gleich »0« ist, dann bedeutet dies, daß jene Aussage falsch ist, jede andere Zahl bedeute, daß jene Aussage wahr ist.

main.c

#include <stdio.h>
#include <ctype.h>

int main( void )
{ printf
( "%d\n", isalpha( 64 )); }

stdout
0
main.c

#include <stdio.h>
#include <ctype.h>

int main( void )
{ printf
( "%d\n", isalpha( 65 )); }

stdout
1

Man kann »isalpha( 65 )« auch als einen Fragesatz verstehen: „Ist 65 die Kennzahl eines Buchstabens?“ Der Wert dieses Ausdrucks ist dann die Antwort auf jene Frage, wobei der Wert „0“ für die Antwort „nein“ und jeder andere Wert für die Antwort „ja“ steht.

Dokumentation (überarbeitet, vereinfacht und übersetzt)
7.4.1.2 Die Funktion »isalpha«
Synopse
#include <ctype.h>
int isalpha( int c );
Ergebniswert
Ob c einen Buchstaben darstellt.

Ein Funktion, deren Aufruf als Aussage interpretiert wird, bezeichnet man auch als Prädikat.

Die Standardfunktion »isalpha« ist ein einstelliges Prädikat. Sie hat einen Parameter vom Typ »int«. Das Aufruf der Funktion »isalpha« hat den Typ »int«. Das Ergebnis der Standardfunktion »isalpha« ist ein von Null verschiedener Wert genau dann, wenn das durch den Argumentwert beschriebene Zeichen ein Buchstabe ist.

Wahrheitszahlen

Nicht nur im Falle der Funktion »isalpha« sondern allgemein wird in C  der Wahrheitswert „falsch“ meist durch die Zahl »0« dargestellt, während jede andere Zahl für den Wahrheitswert „wahr“ steht. Nicht nur »1«, sondern beispielsweise auch »-16« repräsentieren daher den Wahrheitswert „wahr“.

Wir nennen solche Zahlen hier auch Wahrheitszahlen.

Wahrheitszahlen und ihre Bedeutung

Zahl Bedeutung

0 falsch
nicht 0 wahr

Weiteres Beispiel einer Funktionsdokumentation: »islower«

Dokumentation der Funktion »islower« (nach N1570, überarbeitet, vereinfacht und übersetzt)
7.4.1.7 Die Funktion »islower«
Synopse
#include <ctype.h>
int islower( int c );
Ergebniswert
Diese Funktion ergibt »0« genau dann, wenn das Argument nicht  die Kennzahl eines kleinen Buchstabens ist.

Auf einer C -Implementation hat jedes Schriftzeichen eine Kennzahl. Die Funktion »islower« akzeptiert als Argument die Kennzahl eines Schriftzeichens. Wenn dieses Schriftzeichen ein „kleiner Buchstabe“ (eine Minuskel) ist, dann ist der Ergebniswert dieser Funktion eines Zahl, die nicht »0« ist. Wenn dieses Schriftzeichen kein  „kleiner Buchstabe“ (eine Minuskel) ist, dann ist der Ergebniswert dieser Funktion gleich »0«.

Das folgende Beispielprogramm gibt den Wert dieser Funktion für das Schriftzeichen mit der Kennzahl 97 aus.

main.c

#include <stdio.h>
#include <ctype.h>

int main( void )
{ printf
( "%d\n", islower( 97 )); }

stdout
2
Zeichentabelle mit einer Auswahl zweier Zeichen

Zahl Zeichen Beschreibung

65 A  Das große A (Majuskel)
  97 a  Das kleine A (Minuskel)

Wahrheitswerte-Interpretation des Ergebnisses von »islower«

Bedeutung Zahl

falsch 0 
wahr jeder andere Wert (beispielsweise 2)

Auf einer C -Implementation mit der Zeichenkodierung »ASCII« ist »97« die Kennzahl des Buchstabens »a« (des kleinen A, einer Minuskel). Daher ist die Ausgabe diese Programms auf solchen C -Implementationen nicht gleich »0«. Die Ausgabe dieses Programms hängt allerdings von der C -Implementation ab, auf dem es läuft. Auf einer Implementation mit einer anderen Zeichenkodierung könnte der Wert »97« für ein anderes Schriftzeichen stehen, dann könnte die Ausgabe des Programms anders sein. Selbst auf einem Implementation mit  der Zeichenkodierung »ASCII« muß das Ergebnis nicht unbedingt gleich »2« sein, jede andere Zahl außer »0« ist ebenfalls möglich, um mitzuteilen, daß der Wert »97« die Kennzahl eines kleinen Buchstabens ist.

Das folgende Beispielprogramm gibt den Wert dieser Funktion für das Schriftzeichen mit der Kennzahl 65 aus.

main.c

#include <stdio.h>
#include <ctype.h>

int main( void )
{ printf
( "%d\n", islower( 65 )); }

stdout
0

Auf einem C -Implementation mit der Zeichenkodierung »ASCII« ist »65« die Kennzahl des Buchstabens »A« (des großen A, einer Majuskel). Daher ist die Ausgabe diese Programms auf solchen C -Implementationen nicht »0«. Die Ausgabe dieses Programms hängt allerdings von der C -Implementation ab, auf der es läuft. Auf einer C -Implementation mit einer anderen Zeichenkodierung könnte der Wert »65« für ein anderes Schriftzeichen stehen, dann könnte die Ausgabe des Programms anders sein.

Die Funktion »islower« gibt an, ob eine bestimmte Aussage wahr oder falsch ist (nämlich die Aussage, daß die als Argumentwert angegebene Kennzahl die Kennzahl eines kleinen Buchstabens ist). Solch eine Funktion wird auch als ein Prädikat bezeichnet.

Übungsaufgaben

/   Anwendung der Standardfunktion »isprint«

Ein Zeichen, welches durch teilweise Färbung einer Fläche (drucken einer Glyphe) wiedergegeben wird, wird auch „druckbares Zeichen“ genannt. Im Gegensatz dazu stehen Zeichen, deren Ausgabe beispielsweise zu Klängen führt oder die das Ausgabesystem umstellen, wie beispielsweise Zeichen, deren Ausgabe auf einem Drucker beispielsweise zum Auswurf einer Seite führt.

Dokumentation (überarbeitet, vereinfacht und übersetzt)
7.4.1.8 Die Funktion »isprint«
Synopse
#include <ctype.h>
int isprint( int c );
Ergebniswert
Ob c druckbar ist.

Die Standardfunktion »isprint« ermittelt, ob ein Zeichen als „druckbar“ gilt. Sie ergibt »0« genau dann, wenn das nicht  zutrifft.

Ermitteln Sie durch Verwendung der Funktion »isprint«, ob das Zeichen mit der Kennzahl »20« ein druckbares Zeichen ist.

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 stefanram722986 stefan_ram:722986 Wahrheitswerte in C Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd722986, slrprddef722986, 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/wahrheitswerte_c