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

Typauswahl in C 

Die Typauswahl ist kein  Aufruf, sondern eine aufrufähnliche Spezialschreibweise, bei der an der Stelle eines Funktionsnamens das Wort »_Generic« steht. Diese Schreibweise erlaubt es, einen Ausdruck anzugeben, dem eine Liste von Typen folgt. Der Wert dieser Spezialschreibweise ist dann der Wert des Ausdrucks, der hinter dem Typ des ersten Ausdrucks  steht.

main.c

#include <stdio.h>

int main( void )
{ printf
( "%d\n", _Generic( 0, int: 16, double: 15, default: 37 )); }

Protokoll
16
main.c

#include <stdio.h>

int main( void )
{ printf
( "%d\n", _Generic( 0.0, int: 16, double: 15, default: 37 )); }

Protokoll
15
main.c

#include <stdio.h>

int main( void )
{ printf
( "%d\n", _Generic( ".", int: 16, double: 15, default: 37 )); }

Protokoll
37

Die Angabe »default« kennzeichnet den Wert, der sich ergeben soll, wenn keiner der zuvorgenannten Typen der Typ des ersten Ausdrucks ist.

Wir können auf diese Weise nun bestätigen, daß der Ausdruck »0« den Typ »int« und der Ausdruck »0.0« den Typ »double« hat. An Stelle von Numeralia (wie oben »16«, »15« und »37«) sind auch kompliziertere Ausdrücke und Ausdrücke anderer Typen als »int« gestattet, die auch nicht alle denselben Typ haben müssen.

Syntax (vereinfacht)

.--------. .-. .----------. .-. .-----------------. .-.
--->( _Generic )--->( ( )--->| Ausdruck |--->( , )--->| Zuordnungsliste |--->( ) )--->
'--------' '-' '----------' '-' '-----------------' '-'

Zuordnungsliste
.-----------.
---.--->| Zuordnung |---.--->
^ '-----------' |
| .-. |
'--------( , )-------'
'-'

Zuordnung
.----------. .-. .----------.
---.--->| Datentyp |---.--->( : )--->| Ausdruck |--->
| '----------' ^ '-' '----------'
| .-------. |
'--->( default )----'
'-------'

 

{$ugy~}

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 stefanram723891 stefan_ram:723891 Typauswahl in C Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723891, slrprddef723891, 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/typauswahl_c