<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Datentyp</id>
	<title>Datentyp - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Datentyp"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Datentyp&amp;action=history"/>
	<updated>2026-05-22T02:28:44Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Datentyp&amp;diff=23269&amp;oldid=prev</id>
		<title>imported&gt;SchlurcherBot: Bot: http → https</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Datentyp&amp;diff=23269&amp;oldid=prev"/>
		<updated>2026-04-18T15:34:51Z</updated>

		<summary type="html">&lt;p&gt;Bot: http → https&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Begriffsklärungshinweis|Zum internen Aufbau von Dateien siehe [[Dateiformat]]; zu den Regeln zur programmtechnischen Interpretation von Daten siehe [[Datenformat]].}}&lt;br /&gt;
&lt;br /&gt;
Formal bezeichnet ein &amp;#039;&amp;#039;&amp;#039;Datentyp&amp;#039;&amp;#039;&amp;#039; (vom [[englisch]]en &amp;#039;&amp;#039;{{lang|en|data type}}&amp;#039;&amp;#039;) oder eine &amp;#039;&amp;#039;&amp;#039;Datenart&amp;#039;&amp;#039;&amp;#039; in der [[Informatik]] die Zusammenfassung von Objektmengen mit den darauf definierten [[Operator (Mathematik)|Operationen]]. Dabei werden durch den Datentyp des [[Datensatz]]es unter Verwendung einer sogenannten Signatur ausschließlich die Namen dieser [[Objekt (Programmierung)|Objekt]]- und Operationsmengen [[Spezifikation|spezifiziert]]. Ein so spezifizierter Datentyp besitzt noch keine [[Semantik]].&lt;br /&gt;
&lt;br /&gt;
Die weitaus häufiger verwendete, aber speziellere Bedeutung des Begriffs &amp;#039;&amp;#039;Datentyp&amp;#039;&amp;#039; stammt aus dem Umfeld der [[Programmiersprache]]n und bezeichnet die Zusammenfassung konkreter Wertemengen und darauf definierter Operationen zu einer Einheit. Beispiele für Datentypen sind Ganzzahlen, Kommazahlen, Zeichenketten oder auch komplexere Typen wie Datum/Zeit oder [[Objektorientierte Programmierung|Objekte]]. Zur Unterscheidung wird für diese Datentypen in der Literatur auch der Begriff &amp;#039;&amp;#039;&amp;#039;Konkreter Datentyp&amp;#039;&amp;#039;&amp;#039; verwendet. Für eine Diskussion, wie Programmiersprachen mit Datentypen umgehen, siehe [[Typisierung (Informatik)|Typisierung]].&lt;br /&gt;
&lt;br /&gt;
Der gedankliche Übergang von der formalen Definition zu der im Umfeld von Programmiersprachen verwendeten Definition konkreter Datentypen geschieht dabei über die sukzessive Einführung einer Semantik zu den formal spezifizierten Namen der Objekt- und Operationsmengen.&lt;br /&gt;
Die Konkretisierung der Operationsmenge führt zu [[Abstrakter Datentyp|Abstrakten Datentypen]] beziehungsweise [[Algebraische Struktur|Algebraischen Strukturen]].&lt;br /&gt;
Mit der weiteren Konkretisierung der Objektmenge ergibt sich der Konkrete Datentyp.&lt;br /&gt;
&lt;br /&gt;
== Formale Definition eines Datentyps durch eine Signatur ==&lt;br /&gt;
&lt;br /&gt;
Eine Signatur ist ein Paar (Sorten, Operationen), wobei &amp;#039;&amp;#039;Sorten&amp;#039;&amp;#039; Namen für Objektmengen und &amp;#039;&amp;#039;Operationen&amp;#039;&amp;#039; Namen für Operationen auf diesen Mengen repräsentieren. Ein Beispiel soll dies für eine vereinfachte Version des bekannten und weiter unten genauer beschriebenen (konkreten) Datentyp &amp;#039;&amp;#039;Integer&amp;#039;&amp;#039; zeigen, der hier &amp;#039;&amp;#039;Simple Integer&amp;#039;&amp;#039; heiße:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-family:monospace&amp;quot;&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;|&amp;#039;&amp;#039;&amp;#039;Simple Integer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
|                    Sorten&lt;br /&gt;
|colspan=&amp;quot;3&amp;quot;| int&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:top&amp;quot;| Operationen &lt;br /&gt;
| zero: ||      || &amp;lt;code&amp;gt;-&amp;gt; int&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| +   ||: int x int || &amp;lt;code&amp;gt;-&amp;gt; int&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| −   ||: int x int || &amp;lt;code&amp;gt;-&amp;gt; int&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;|&amp;#039;&amp;#039;&amp;#039;End Simple Integer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
Dies ist eine &amp;#039;&amp;#039;Signatur&amp;#039;&amp;#039; für einen angenommenen Datentyp &amp;#039;&amp;#039;Simple Integer&amp;#039;&amp;#039;, auf dem nur zwei Operationen + und − (neben der &amp;quot;Erzeuger-Operation&amp;quot;) erlaubt sind. Die einzige Sorte nennen wir &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt;. Die Operation &amp;#039;&amp;#039;zero&amp;#039;&amp;#039; dient zur Erzeugung eines &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt;-Elementes. Die Operationen + und − sind jeweils zweistellig und liefern jeweils wiederum ein Element der Sorte &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt;. Wichtig ist, dass es sich hier um eine rein syntaktische Spezifikation handelt. Was ein &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; ist, wird nirgendwo definiert. Hierzu müsste noch eine Zuordnung des Sortennamens zu einer Menge erfolgen. Eine sinnvolle Zuordnung wäre in diesem Fall etwa die Menge der [[Natürliche Zahlen|natürlichen Zahlen]]. Auch über die Arbeitsweise der Operationen ist nichts weiter ausgesagt als ihre Stelligkeit und ihr Ergebnis. Ob das +-Symbol der Arbeitsweise der Summenoperation entspricht, wird hier nicht festgelegt – dies wäre auch völlig unmöglich, da nicht einmal bekannt ist, ob die Operation auf den natürlichen Zahlen arbeitet. Derartige Zuordnungen fallen in den Bereich der Semantik. Eine um die Semantik erweiterte Spezifikation könnte daher folgendermaßen aussehen:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-family:monospace&amp;quot;&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;|&amp;#039;&amp;#039;&amp;#039;Simple Integer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;|/* reine Syntax */&lt;br /&gt;
|-&lt;br /&gt;
|                    Sorten || int&lt;br /&gt;
|&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; ||&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:top&amp;quot;| Operationen &lt;br /&gt;
| zero: ||      || &amp;lt;code&amp;gt;-&amp;gt; int&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| +   ||: int x int || &amp;lt;code&amp;gt;-&amp;gt; int&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| −   ||: int x int || &amp;lt;code&amp;gt;-&amp;gt; int&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;|/* Zuordnung einer Semantik */&lt;br /&gt;
|-&lt;br /&gt;
|       Mengen&lt;br /&gt;
|colspan=&amp;quot;3&amp;quot;        | int = IN&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot; style=&amp;quot;vertical-align:top&amp;quot;| Funktionen&lt;br /&gt;
|colspan=&amp;quot;3&amp;quot;        | zero = 0&lt;br /&gt;
|-&lt;br /&gt;
|              + ||: int x int&lt;br /&gt;
|style=&amp;quot;font-family:sans-serif&amp;quot;| &amp;amp;nbsp; entspreche der Summe zweier Zahlen aus IN&lt;br /&gt;
|-&lt;br /&gt;
|              − ||: int x int&lt;br /&gt;
|style=&amp;quot;font-family:sans-serif&amp;quot;| &amp;amp;nbsp; entspreche der arithmetischen Differenz zweier Zahlen aus IN&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;|&amp;#039;&amp;#039;&amp;#039;End Simple Integer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
Damit wird allerdings der Bereich einer Signatur bereits überschritten. Diese Spezifikation würde man vielmehr als &amp;#039;&amp;#039;Algebra&amp;#039;&amp;#039; bezeichnen. Die Spezifikation kommt auf diese Weise jedoch dem programmiersprachlichen Verständnis des Begriffes &amp;#039;&amp;#039;Datentyp&amp;#039;&amp;#039; näher, dem sich ein Großteil des restlichen Artikels widmet.&lt;br /&gt;
&lt;br /&gt;
== Datentypen in Programmiersprachen ==&lt;br /&gt;
[[Datei:Python 3. The standard type hierarchy.png|mini]]&lt;br /&gt;
Viele [[Programmiersprache]]n bieten eine eigene Menge an vordefinierten Datentypen, bei denen das Prinzip des jeweiligen Wertebereichs, wie beispielsweise [[Ganze Zahl]]en, [[Gleitkommazahl]]en oder [[Zeichenkette]]n, gleich ist. Die tatsächlichen Namen dieser Datentypen und die genauen Definitionen der Wertebereiche und der dazugehörigen Operationen unterscheiden sich jedoch zum Teil stark, da jene von der verwendeten Programmiersprache, der verwendeten [[Plattform (Computer)|Plattform]] und anderen [[compiler]]abhängigen Faktoren abhängen.&lt;br /&gt;
&lt;br /&gt;
Datentypen werden in der [[Programmierung]] verwendet, um [[Speicherbereich]]en eine konkrete [[Formale Semantik|Semantik]] zuzuweisen. Diese Speicherbereiche werden [[Variable (Programmierung)|Variablen]] oder [[Konstante (Programmierung)|Konstanten]] genannt. Die Datentypen ermöglichen es einem [[Compiler]] oder [[Laufzeitumgebung]], die [[Typisierung (Informatik)|Typverträglichkeit]] der vom [[Programmierer]] angegebenen Operationen zu überprüfen.&lt;br /&gt;
Unzulässige Operationen werden zum Teil bereits beim [[Compiler|Kompilieren]] erkannt, so dass beispielsweise die [[Division (Mathematik)|Division]] einer [[Zeichenkette]] ‚HANS’ durch die Zahl ‚5’, was nicht sinnvoll und in üblichen Programmiersprachen undefiniert ist, verhindert wird.&lt;br /&gt;
&lt;br /&gt;
Man unterscheidet elementare und zusammengesetzte Datentypen. Ein weiterer Ordnungsbegriff ist &amp;#039;&amp;#039;Ordinaler Datentyp&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
=== Ordinale Datentypen ===&lt;br /&gt;
&lt;br /&gt;
Ordinale Datentypen sind dadurch gekennzeichnet, dass auf ihnen eine feste [[Ordnungsrelation]] definiert ist, die ihren Werten eine eindeutige Ordnungsnummer zuordnet. Dadurch ist die Reihenfolge der Werte festgelegt. Als Folge hat&lt;br /&gt;
* jeder Wert außer dem ersten genau einen direkten Vorgänger und&lt;br /&gt;
* jeder Wert außer dem letzten genau einen direkten Nachfolger.&lt;br /&gt;
&lt;br /&gt;
Ob ein elementarer Datentyp auch ein ordinaler Datentyp ist, hängt von der Festlegung in der konkreten Programmiersprache ab.&lt;br /&gt;
Beispiele:&lt;br /&gt;
* Der &amp;#039;&amp;#039;[[Aufzählungstyp]]&amp;#039;&amp;#039; ist in PASCAL ein ordinaler Datentyp, da die Werte von links nach rechts geordnet sind; Nachfolger, Vorgänger sind über Standardfunktionen bestimmbar. In C ist das nicht der Fall.&lt;br /&gt;
* &amp;#039;&amp;#039;Boolean&amp;#039;&amp;#039; ist ein spezieller Aufzählungstyp mit den beiden Werten „falsch“ (Ordnungswert 0) und „wahr“ (Ordnungswert 1), meist englisch „false“ und „true“ genannt.&lt;br /&gt;
* &amp;#039;&amp;#039;Ganze Zahlen&amp;#039;&amp;#039; und &amp;#039;&amp;#039;Natürliche Zahlen&amp;#039;&amp;#039; sind von Natur aus ordinale Datentypen.&lt;br /&gt;
&lt;br /&gt;
=== Elementare Datentypen ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Elementare Datentypen&amp;#039;&amp;#039;&amp;#039;, auch &amp;#039;&amp;#039;&amp;#039;einfache Datentypen&amp;#039;&amp;#039;&amp;#039; oder &amp;#039;&amp;#039;&amp;#039;primitive Datentypen&amp;#039;&amp;#039;&amp;#039; genannt, können nur einen Wert des entsprechenden Wertebereichs aufnehmen. Sie besitzen eine festgelegte ([[Endliche Menge|endliche]]) Anzahl von Werten ([[Diskretheit]]). Daher können [[reelle Zahl]]en als [[Gleitkommazahl]]en nur mit einer bestimmten Genauigkeit abgebildet werden. Für elementare Datentypen sind in einer Programmiersprache Grundoperationen definiert, bei den &amp;#039;&amp;#039;Zahlen&amp;#039;&amp;#039; sind das die [[Grundrechenart]]en. Datentypen haben je nach Programmiersprache und Wertebereich unterschiedliche Bezeichnungen und werden groß oder klein geschrieben (hier zur Übersicht alle groß).&lt;br /&gt;
&lt;br /&gt;
==== [[Ganze Zahl]]en ====&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bezeichnung&amp;#039;&amp;#039;&amp;#039;: BIGINT, BIN, BIN FIXED, BINARY, BYTE, COMP, INT, [[Integer (Datentyp)|INTEGER]], LONG, LONG INT, LONGINT, MEDIUMINT, SHORT, SHORTINT, SMALLINT&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Wertebereich:&amp;#039;&amp;#039;&amp;#039; Meist 32 Bit (−2&amp;lt;sup&amp;gt;31&amp;lt;/sup&amp;gt;…2&amp;lt;sup&amp;gt;31&amp;lt;/sup&amp;gt;-1), 8&amp;amp;nbsp;Bit, 16&amp;amp;nbsp;Bit, 64&amp;amp;nbsp;Bit&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Operationen:&amp;#039;&amp;#039;&amp;#039; [[Grundrechenarten|+, −, *]], [[Vergleichsoperator|&amp;amp;lt;, &amp;gt;, =]], [[Division mit Rest|Ganzzahldivision]], [[Modulo]], [[Bitweiser Operator|bitweise Operatoren]], [[Inkrement und Dekrement]]&lt;br /&gt;
&lt;br /&gt;
==== [[Natürliche Zahl]]en ====&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bezeichnung&amp;#039;&amp;#039;&amp;#039;: BYTE, CARDINAL, DWORD, NATURAL, UINT, UNSIGNED, UNSIGNED CHAR, UNSIGNED INT, UNSIGNED LONG, UNSIGNED SHORT, [[Datenwort|WORD]]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Wertebereich:&amp;#039;&amp;#039;&amp;#039; Meist 32 Bit (0…2&amp;lt;sup&amp;gt;32&amp;lt;/sup&amp;gt;-1), 8&amp;amp;nbsp;Bit, 16&amp;amp;nbsp;Bit, 64&amp;amp;nbsp;Bit&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Operationen:&amp;#039;&amp;#039;&amp;#039; [[Grundrechenarten|+, −, *]], [[Vergleichsoperator|&amp;amp;lt;, &amp;gt;, =]], [[Division mit Rest|Ganzzahldivision]], [[Modulo]], [[Bitweiser Operator|bitweise Operatoren]]&lt;br /&gt;
&lt;br /&gt;
==== [[Festkommazahl]]en (Dezimalzahlen) ====&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bezeichnung:&amp;#039;&amp;#039;&amp;#039; COMP-3, CURRENCY, PACKED DECIMAL, DEC, DECIMAL, MONEY, NUMERIC&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Wertebereich:&amp;#039;&amp;#039;&amp;#039; Wertebereich direkt abhängig von der maximalen Stellenanzahl, die meist vorzugeben ist; CURRENCY (64&amp;amp;nbsp;Bit): -922337203685477,5808…922337203685477,5807&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Operationen:&amp;#039;&amp;#039;&amp;#039; [[Grundrechenarten|+, −, *]], [[Vergleichsoperator|&amp;amp;lt;, &amp;gt;, =]], [[Division mit Rest|Ganzzahldivision]], [[Modulo]]&lt;br /&gt;
&lt;br /&gt;
==== [[Aufzählungstyp]]en ====&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bezeichnung:&amp;#039;&amp;#039;&amp;#039; ENUM, SET oder implizit&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Wertebereich:&amp;#039;&amp;#039;&amp;#039; Frei wählbar, beispielsweise &amp;#039;&amp;#039;(SCHWARZ, ROT, BLAU, GELB)&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Operationen:&amp;#039;&amp;#039;&amp;#039; [[Vergleichsoperator|&amp;amp;lt;, &amp;gt;, =]]&lt;br /&gt;
&lt;br /&gt;
==== [[Boolean]] (logische Werte) ====&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bezeichnung:&amp;#039;&amp;#039;&amp;#039; BOOL, BOOLEAN, LOGICAL, oder (implizit ohne Bezeichner)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Wertebereich:&amp;#039;&amp;#039;&amp;#039; (TRUE, FALSE) oder (≠ 0, = 0) oder (= -1, = 0)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Operationen:&amp;#039;&amp;#039;&amp;#039; [[Negation|NOT]], [[Konjunktion (Logik)|AND]], [[XOR]], [[NOR-Gatter|NOR]], [[Shefferscher Strich|NAND]], [[Disjunktion|OR]], [[Vergleichsoperator|=, ≠]]&lt;br /&gt;
&lt;br /&gt;
==== [[Zeichen]] (einzelnes Zeichen) ====&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bezeichnung:&amp;#039;&amp;#039;&amp;#039; [[Char (Datentyp)|CHAR]], CHARACTER&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Wertebereich:&amp;#039;&amp;#039;&amp;#039; Alle Elemente des [[Zeichensatz]]es (zum Beispiel Buchstaben)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Operationen:&amp;#039;&amp;#039;&amp;#039; [[Vergleichsoperator|&amp;amp;lt;, &amp;gt;, =]], Konvertierung in INTEGER…&lt;br /&gt;
Durch die weite Verbreitung von [[MBCS]] entspricht CHAR meist nicht mehr einem Element eines Zeichen&amp;#039;&amp;#039;satzes&amp;#039;&amp;#039; (und somit einem Zeichen), sondern einer „(Code-)Einheit“&amp;lt;!-- der Begriff stammt aus UTF-16 --&amp;gt; einer Zeichen&amp;#039;&amp;#039;kodierung&amp;#039;&amp;#039;. In den verbreiteten MBCS [[UTF-8]] und [[UTF-16]] ist zwar jeweils eine Minderheit der [[Unicode|damit insgesamt kodierbaren Zeichen]] mit einem einzelnen CHAR kodierbar, die Mehrheit benötigt jedoch eine Folge mehrerer CHARs: In UTF-8 bilden dann zwei bis vier 8-Bit-Einheiten eine &amp;#039;&amp;#039;Sequenz&amp;#039;&amp;#039;, in UTF-16 zwei 16-Bit-Einheiten ein &amp;#039;&amp;#039;Surrogate-Pärchen&amp;#039;&amp;#039;. Erst wenn man diese Einheiten hintereinander in eine Zeichenkette schreibt, ist das Zeichen kodiert. CHAR ist somit allgemein eher als ein 8- (ANSICHAR, BYTECHAR) oder 16-Bit-Wert (WIDECHAR, NATIONAL CHAR&amp;lt;!-- in SQL --&amp;gt;) zu verstehen, der bei Zeichenkettenoperationen nicht als Zahl, sondern als eine Zeichenkette der Länge 1 interpretiert wird.&lt;br /&gt;
&lt;br /&gt;
==== [[Gleitkommazahl]]en ====&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bezeichnung:&amp;#039;&amp;#039;&amp;#039; DOUBLE, DOUBLE PRECISION, EXTENDED, FLOAT, HALF, LONGREAL, REAL, SINGLE, SHORTREAL&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Wertebereich:&amp;#039;&amp;#039;&amp;#039; Verschiedene Definitionen (siehe unten)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Operationen:&amp;#039;&amp;#039;&amp;#039; [[Grundrechenarten|+, −, *, /]], [[Vergleichsoperator|&amp;amp;lt;, &amp;gt;, =]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Genauigkeit von Gleitkommazahl-Typen&amp;lt;br /&amp;gt;&lt;br /&gt;
!      !! Bitanzahl n&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;|         Wertebereich von … bis !! signifikante Stellen&lt;br /&gt;
|-&lt;br /&gt;
| HALF   ||  16    || 3,1·10&amp;lt;sup&amp;gt;−5&amp;lt;/sup&amp;gt;  || 6,6·10&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;  || 4&lt;br /&gt;
|-&lt;br /&gt;
| SINGLE, REAL  ||  32    || 1,5·10&amp;lt;sup&amp;gt;−45&amp;lt;/sup&amp;gt;  || 3,4·10&amp;lt;sup&amp;gt;38&amp;lt;/sup&amp;gt;  || 7–8&lt;br /&gt;
|-&lt;br /&gt;
| REAL   ||  48    || 2,9·10&amp;lt;sup&amp;gt;−39&amp;lt;/sup&amp;gt;  || 1,7·10&amp;lt;sup&amp;gt;38&amp;lt;/sup&amp;gt;  || 11–12&lt;br /&gt;
|-&lt;br /&gt;
| DOUBLE, REAL  ||  64    || 5,0·10&amp;lt;sup&amp;gt;−324&amp;lt;/sup&amp;gt; || 1,7·10&amp;lt;sup&amp;gt;308&amp;lt;/sup&amp;gt; || 15–16&lt;br /&gt;
|-&lt;br /&gt;
| REAL   ||  64    || 1,1·10&amp;lt;sup&amp;gt;−306&amp;lt;/sup&amp;gt; || 1,8·10&amp;lt;sup&amp;gt;308&amp;lt;/sup&amp;gt; || 15–16&lt;br /&gt;
|-&lt;br /&gt;
| EXTENDED ||  80    || 1,9·10&amp;lt;sup&amp;gt;−4951&amp;lt;/sup&amp;gt; || 1,1·10&amp;lt;sup&amp;gt;4932&amp;lt;/sup&amp;gt; || 19–20&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Bitmengen ====&lt;br /&gt;
&lt;br /&gt;
Bitmengen stellen eine [[Menge (Datenstruktur)|Menge]] von mehreren [[Bit]]s dar. In einigen Programmiersprachen gibt es zur Wahrung der [[Typsicherheit]] einen eigenen Datentyp und eigene [[Operator (Mathematik)|Operatoren]] (zum Beispiel für die [[Vereinigungsmenge]] oder die [[Schnittmenge]]) für Bitmengen.&lt;br /&gt;
&lt;br /&gt;
Bitmengen sind nicht mit [[Aufzählungstyp]]en oder [[Datenfeld]]ern zu verwechseln, da mehrere Elemente des Datentyps (respektive der Menge) gleichzeitig angesprochen werden können. In vielen Programmiersprachen werden [[Ganze Zahl|ganzzahlige]] Datentypen für die Repräsentation von Bitmengen benutzt, so dass Zahlen und Bitmengen [[Zuweisungskompatibilität|zuweisungskompatibel]] sind, obwohl [[Arithmetik|arithmetische]] Operatoren bei Bitmengen und [[Menge (Mathematik)|Mengenoperatoren]] im Zusammenhang mit ganzen Zahlen keinen Sinn ergeben.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bezeichnung:&amp;#039;&amp;#039;&amp;#039; [[Menge (Datenstruktur)|SET]], BITSET&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Wertebereich:&amp;#039;&amp;#039;&amp;#039; {} für leere Menge, {i} für Menge mit dem Element i, {i, j} für Menge mit den Elementen i und j&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Operationen:&amp;#039;&amp;#039;&amp;#039; [[Vergleichsoperator]], Typumwandlung in ganze Zahl oder Element eines [[Zeichensatz]]es, Mengenoperatoren&lt;br /&gt;
&lt;br /&gt;
=== Zeigertypen / Dynamische Datentypen ===&lt;br /&gt;
&lt;br /&gt;
Eine Besonderheit sind [[Zeiger (Informatik)|Zeiger]], deren wirklicher Wertebereich in vielen Programmiersprachen anonym bleibt, da sie „nur“ Referenzen auf beliebige andere Datentypen sind. Je nach referenziertem Typ werden Zeiger auf bestimmte Elemente gesondert benannt, wie beispielsweise Zeiger auf [[Datei]]en, [[Drucker (Gerät)|Drucker]] oder [[Pipe (Informatik)|Pipes]].&lt;br /&gt;
&lt;br /&gt;
[[Objektorientierte Programmiersprache]]n speichern den vom Zeiger referenzierten Datentyp (zum Beispiel bei Instanzvariablen) zusammen mit der Adresse, auf die der Zeiger verweist, damit die [[Zuweisungskompatibilität]] nicht nur für den Datentyp der Adressierung, sondern auch für den referenzierten Inhalt geprüft werden kann. Dies ist dann sogar zur [[Laufzeit (Informatik)|Laufzeit]] möglich und für einige Anwendungen (beispielsweise bei [[Polymorphie (Programmierung)|Polymorphie]]) auch notwendig.&lt;br /&gt;
&lt;br /&gt;
==== [[Zeiger (Informatik)|Zeiger]] ====&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bezeichnung:&amp;#039;&amp;#039;&amp;#039; ACCESS, POINTER, IntPtr oder auch nur kurz Stern (&amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Wertebereich:&amp;#039;&amp;#039;&amp;#039; Adresse des Basistyps (oft anonym)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Operationen:&amp;#039;&amp;#039;&amp;#039; Referenz, Dereferenz, in einigen Sprachen: [[Grundrechenarten|+, −, *, /]]&lt;br /&gt;
&lt;br /&gt;
==== Konstanter Nullzeiger ====&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bezeichnung:&amp;#039;&amp;#039;&amp;#039; NULL, VOID, None, NIL, Nothing&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Wertebereich:&amp;#039;&amp;#039;&amp;#039; keiner&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Operationen&amp;#039;&amp;#039;&amp;#039;: [[Vergleichsoperator|=]]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bedeutung:&amp;#039;&amp;#039;&amp;#039; Dieser Zeiger ist verschieden von allen Zeigern auf Objekte.&lt;br /&gt;
&lt;br /&gt;
==== Prozedurtypen ====&lt;br /&gt;
&lt;br /&gt;
Einige Programmiersprachen, wie zum Beispiel [[Oberon (Programmiersprache)|Oberon]], verwenden Prozedurtypen, die für Zeigervariablen verwendet werden, die auf verschiedene Prozeduren mit identischen formalen [[Parameter (Informatik)|Parameterlisten]] zeigen können.&lt;br /&gt;
&lt;br /&gt;
=== Zusammengesetzte Datentypen ===&lt;br /&gt;
&lt;br /&gt;
Zusammengesetzte Datentypen sind ein Datenkonstrukt, welches aus einfacheren Datentypen besteht. Da sie theoretisch beliebig komplex werden können, werden sie auch häufig schon zu den [[Datenstruktur]]en gezählt. Den meisten Programmiersprachen gemeinsam sind:&lt;br /&gt;
&lt;br /&gt;
* Reihung ([[Tupel (Informatik)|Tupel]]), Tabelle; Feld (mehrdeutig!)&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Bezeichnung&amp;#039;&amp;#039;&amp;#039;: [[Array (Datentyp)|ARRAY]] (implizite Definition mit [n] oder (n) ohne Bezeichner)&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Wertebereich:&amp;#039;&amp;#039;&amp;#039; Abbildung einer endlichen Menge (Indexmenge) auf den Wertebereich eines Basistyps (Elementtyp). Die Indexmenge muss dabei ordinal sein. Durch Anwenden mehrerer Indizes entsteht eine mehrdimensionale Reihung.&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Operationen:&amp;#039;&amp;#039;&amp;#039; [[Vergleichsoperator|&amp;amp;lt;, &amp;gt;, =]], Zuweisung mit [[Zuweisungskompatibilität]]&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Beispiel:&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;type 3D-Vektor is ARRAY(1..3) of INTEGER;&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Zeichenkette]] fester Länge (im Grunde sind Zeichenketten selbst nur eine Reihung des Typs Character (Zeichen). Da sie jedoch in vielen Programmiersprachen vordefiniert sind, werden sie hier gesondert aufgelistet.)&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Bezeichnung&amp;#039;&amp;#039;&amp;#039;: [[Array (Datentyp)|Array]] of CHAR, CHAR(n), CHAR[n]&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Wertebereich:&amp;#039;&amp;#039;&amp;#039; Alle möglichen Zeichenketten&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Operationen:&amp;#039;&amp;#039;&amp;#039; Stringfunktionen (Teilstring, [[Konkatenation (Listen)|Konkatenation]] [Zusammensetzung]), [[Vergleichsoperator|&amp;amp;lt;, &amp;gt;, =]]&lt;br /&gt;
* [[Zeichenkette]] variabler Länge. Die Länge ist feststellbar, implizit durch ein Metazeichen als String-Endezeichen (ASCII \0), explizit durch eine Variable, oder über eine Standardfunktion. Häufig als [[Abstrakter Datentyp]] in einer Standardbibliothek.&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Bezeichnung&amp;#039;&amp;#039;&amp;#039;: [[Zeichenkette|String]], [[Array (Datentyp)|Array]] of CHAR, VARCHAR, [[CLOB]], Text&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Wertebereich:&amp;#039;&amp;#039;&amp;#039; Zeichenketten variabler Länge&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Operationen:&amp;#039;&amp;#039;&amp;#039; Stringfunktionen (Teilstring, Länge, Konkatenation [Zusammensetzung]), [[Vergleichsoperator|&amp;amp;lt;, &amp;gt;, =]]&lt;br /&gt;
* binäre [[Zeichenkette]] variabler Länge. Die Länge kann durch eine Variable oder über eine Standardfunktion ermittelt werden.&amp;lt;ref&amp;gt;{{Internetquelle |autor=David Axmark, Michael „Monty“ Widenius u.&amp;amp;nbsp;a. |url=http://dev.mysql.com/doc/refman/5.1/de/blob.html |titel=Die Spaltentypen BLOB und TEXT |werk=MySQL 5.1 Referenzhandbuch |hrsg=MySQL AB |datum=2008-08-11 |abruf=2008-08-28 |archiv-url=https://web.archive.org/web/20080718111506/http://dev.mysql.com/doc/refman/5.1/de/blob.html |archiv-datum=2008-07-18|offline=1}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{Internetquelle |autor=Jack Melnick u.&amp;amp;nbsp;a. |url=https://download.oracle.com/docs/cd/B28359_01/appdev.111/b28395/oci07lob.htm |titel=LOB and BFILE Operations |werk=Oracle Call Interface Programmer’s Guide, 11g Release 1 (11.1) |hrsg=Oracle |datum=2008-05 |sprache=en |abruf=2008-08-28}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Bezeichnung&amp;#039;&amp;#039;&amp;#039;: [[Binary Large Object|BLOB]]&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Wertebereich:&amp;#039;&amp;#039;&amp;#039; binäre Zeichenketten variabler Länge&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Operationen:&amp;#039;&amp;#039;&amp;#039; Länge, Konkatenation [Zusammensetzung], [[Vergleichsoperator|=]]&lt;br /&gt;
* [[Verbund (Datentyp)|Verbund]], Satz, Struktur, Bereich&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Bezeichnung&amp;#039;&amp;#039;&amp;#039;: RECORD, STRUCT, CLASS (erweiterte Bedeutung), (implizite Definition über Stufennummern)&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Wertebereich:&amp;#039;&amp;#039;&amp;#039; Ein Verbund enthält eine Folge verschiedener Komponenten, welche verschiedene Datentypen haben können. Als Komponententyp ist jeder Typ zulässig. In einigen [[Objektorientierte Programmiersprache|objektorientierten Programmiersprachen]] (zum Beispiel [[Oberon (Programmiersprache)|Oberon]]) können Verbunde zur Beschreibung des Verhaltens der Komponenten des Verbunds mittels [[Methode (Programmierung)|Methoden]] auch typengebundene Prozeduren haben.&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Operationen:&amp;#039;&amp;#039;&amp;#039; Vergleich (nur Gleichheit oder Verschiedenheit), Zuweisung mit oder ohne [[Zuweisungskompatibilität]] (stark programmiersprachenabhängig)&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Beispiel:&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;type Prüfung is RECORD (Fach: STRING, Schueler: STRING, Punkte: INTEGER, Lehrer: STRING, Termin: DATUM)&amp;lt;/code&amp;gt;&lt;br /&gt;
** In vielen Programmiersprachen existieren Möglichkeiten, den [[Speicherbereich]] eines Verbunds mehrfach unterschiedlich zu interpretieren. Das wird &amp;#039;&amp;#039;Variantenrecord&amp;#039;&amp;#039; oder &amp;#039;&amp;#039;UNION&amp;#039;&amp;#039; genannt. Dabei ist jedoch meist keine [[Typsicherheit]] mehr gegeben.&lt;br /&gt;
&lt;br /&gt;
=== Zusätzliche individuelle Formatangaben ===&lt;br /&gt;
&amp;lt;!--* Bei Zeitangaben: Kommentierung raus wenn weitere Beispiele folgen würden.--&amp;gt;Bei der Verwendung von Datentypen im Quelltext eines Programms werden oft zu einem gewählten Datentyp individuelle und zusätzliche Formatangaben implementiert. Zum Beispiel kann ein &amp;#039;&amp;#039;Datum&amp;#039;&amp;#039; (oder allgemein eine Zeitangabe) als ganzzahliger elementarer Datentyp angelegt werden, zu dem Angaben zur Form der Verarbeitung/Darstellung ergänzt werden. Das Datum ist dann z.&amp;amp;nbsp;B. in Millisekunden seit dem 1. Januar 1970 0:00 Uhr gespeichert und kann, davon ausgehend, in bestimmte andere Formen (wie &amp;#039;TT.MM.JJJJ&amp;#039; oder &amp;#039;MM.TT hh:ss&amp;#039;) überführt werden; siehe.&amp;lt;ref&amp;gt;C-Standard ISO/IEC 9899:TC3 &amp;#039;&amp;#039;Committee Draft&amp;#039;&amp;#039; [https://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf open-std.org] (PDF; 3,6&amp;amp;nbsp;MB) S. 338&amp;lt;/ref&amp;gt; Verbreitet ist auch eine je nach Kontext unterschiedlich definierte [[julianisches Datum#Zeitmaße in Software|Variante des julianischen Datums]], also eine Gleitkommazahl, deren Ganzzahlanteil die Anzahl der Tage ab einem bestimmten Zeitpunkt angibt und der Nachkommateil den vergangenen Teil des kodierten Tages (also die Uhrzeit). Alternativ könnte ein Datum natürlich auch als Verbund (z.&amp;amp;nbsp;B. aus drei Zahlen für Tag, Monat und Jahr) dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
== Funktionen als Werte erster Ordnung ==&lt;br /&gt;
&lt;br /&gt;
In vielen zeitgenössischen Programmiersprachen sind neben &amp;#039;&amp;#039;Funktionszeigern&amp;#039;&amp;#039; auch reguläre Funktionswerte, Funktionsliterale bzw. [[anonyme Funktion]]en verfügbar. Diese wurden in Anlehnung an den [[Lambda-Kalkül]] entwickelt und bereits 1958 (wenn auch mit fehlerhafter dynamischer Bindung) in LISP implementiert. Eine korrekte, d.&amp;amp;nbsp;h. statische Bindung wurde z.&amp;amp;nbsp;B. für [[Algol 68]] spezifiziert. Dass Funktionen bis heute z.&amp;amp;nbsp;T. nicht als Werte begriffen werden, liegt an der erst jetzt überhaupt einsetzenden Verbreitung dieser Konzeption außerhalb der Informatik.&lt;br /&gt;
&lt;br /&gt;
== Universeller Datentyp ==&lt;br /&gt;
&lt;br /&gt;
Unter einem universellen Datentyp wird der Typ der Werte in einer Programmiersprache mit Unterstützung für typenlose Variablen verstanden. Hierbei handelt es sich meist um die [[Disjunkte Vereinigung|diskriminierte Vereinigung]] der Typen der auftretenden Werte (elementare, zusammengesetzte, Funktionen etc.). Der universelle Datentyp tritt charakteristischerweise in universellen [[Skriptsprache]]n auf. Als Beispiele für die Verwendung von universellen Datentypen in Sprachen anderer Gattung sei der [[Lambda-Kalkül]], in dem Funktionen die einzigen Werte sind, und [[Prolog (Programmiersprache)|Prolog]] hervorgehoben, in der die Daten durch die [[Herbrand-Struktur]] gegeben sind.&lt;br /&gt;
&lt;br /&gt;
== Abstrakte Datentypen ==&lt;br /&gt;
{{Hauptartikel|Abstrakter Datentyp}}&lt;br /&gt;
&lt;br /&gt;
; Definition:Ein Abstrakter Datentyp (ADT) ist eine Sammlung von Daten in Variablen – verbunden mit der Definition aller Operationen, die auf sie zugreifen.&lt;br /&gt;
&lt;br /&gt;
Da der Zugriff (lesend oder schreibend) nur über die festgelegten Operationen erfolgt, sind die Daten nach außen [[Datenkapselung (Programmierung)|gekapselt]]. Jeder ADT enthält einen Datentyp bzw. eine Datenstruktur.&lt;br /&gt;
&lt;br /&gt;
[[Objektorientierte Programmiersprache]]n unterstützen durch ihr Klassenkonzept die Erstellung von ADTs, da hier Daten und Operationen &amp;#039;&amp;#039;gebunden&amp;#039;&amp;#039; werden, und die Daten geschützt werden können. Einige [[Modulare Programmierung|modulare Programmiersprachen]] wie [[Ada (Programmiersprache)|Ada]] oder [[Modula-2]] unterstützen ebenfalls gezielt die Erstellung von abstrakten Datentypen.&lt;br /&gt;
&lt;br /&gt;
Aus fachlicher Sicht definiert ein [[Abstrakter Datentyp]] einen definierten Wertebereich mit fachlicher Bedeutung und seinen spezifischen Ausprägungen. So ist der Datentyp &amp;#039;Kundennummer&amp;#039; möglicherweise vom Elementartyp &amp;#039;Ganze Zahlen&amp;#039;, unterscheidet sich jedoch durch eine definierte Länge und z.&amp;amp;nbsp;B. einer Prüfziffer in der letzten Stelle. – Es bildet dadurch eine Untermenge aller ganzen Zahlen in der definierten Länge. Es können hier auch komplexe Daten mit einer Abhängigkeit zueinander als ADT vereint werden. Dies ist am Beispiel einer Darstellung von Zeiträumen gebräuchlich. Es werden ein Beginndatum und ein Endedatum (beide haben den Datentyp &amp;#039;Date&amp;#039;) über eine Integritätsbedingung verknüpft. Dadurch wird letztlich der zulässige Wertebereich des Endedatums an weitere Bedingungen geknüpft. – Letztendlich ist ein ADT ein beliebig komplexer Wertebereich, der an statische und/oder dynamische Werte und zugeordnete Regeln zur Wertbestimmung gebunden ist.&lt;br /&gt;
&lt;br /&gt;
== Anonyme Datentypen ==&lt;br /&gt;
&lt;br /&gt;
Einige Programmiersprachen und die XML-Strukturdefinitionssprache [[XML Schema]] unterstützen das Konzept des [[Anonymer Datentyp|anonymen Datentyps]]. Dabei handelt es sich um einen Datentyp, für den kein Name definiert wird.&lt;br /&gt;
&lt;br /&gt;
== Polymorphie von Datentypen ==&lt;br /&gt;
{{Siehe auch|Polymorphie (Programmierung)}}&lt;br /&gt;
Die parametrische [[Polymorphie (Programmierung)|Polymorphie]] ermöglicht es, einen Datentyp (oder eine [[Funktion (Programmierung)|Funktion]]) [[Generische Programmierung|generisch]] zu schreiben, so dass er Werte einheitlich behandeln kann, ohne von seinem konkreten statischen Datentyp abhängig zu sein. Die parametrische Polymorphie ist eine Möglichkeit, eine [[Programmiersprache]] ausdrucksstärker zu machen und gleichzeitig die vollständige statische [[Typsicherheit]] zu gewährleisten.&lt;br /&gt;
&lt;br /&gt;
Ein Datentyp, der den Anschein erwecken kann, von einem verallgemeinerten Datentyp zu sein, z. B. eine Liste mit Elementen beliebigen Typs, wird als &amp;#039;&amp;#039;polymorpher Datentyp&amp;#039;&amp;#039; bezeichnet.&lt;br /&gt;
&lt;br /&gt;
== Generische Programmierung ==&lt;br /&gt;
{{Siehe auch|Generische Programmierung}}&lt;br /&gt;
Die Implementierung erfolgt bei einigen [[Programmiersprache]]n durch das Konzept [[Generischer Typ|generischer Typen]] bzw. [[Template (C++)|Templates]] – so gestalten sich [[Dynamische Programmiersprache|dynamische Programmiersprachen]], bei denen sich der Typ einer Variable zur Laufzeit ändern darf, durch ihre verallgemeinerte [[Polymorphie (Programmierung)|Polymorphie]] generisch. Von Sprachen, die solche Mechanismen bieten, sagt man auch, dass sie [[generische Programmierung]] erlauben.&lt;br /&gt;
&lt;br /&gt;
Wesentlich bei der generischen Programmierung ist, dass die Algorithmen nicht für einen bestimmten Datentyp geschrieben werden, sondern nur bestimmte Anforderungen an die Typen stellen. Das Prinzip wird auch &amp;#039;&amp;#039;parametrische Polymorphie&amp;#039;&amp;#039; genannt.&lt;br /&gt;
&lt;br /&gt;
Paradebeispiel ist die [[C++-Standardbibliothek]] der Programmiersprache [[C++]], bei der die [[Algorithmus|Algorithmen]] so weit wie möglich von den Datenstrukturen, mit denen sie arbeiten, getrennt werden.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
{{commonscat|Data types}}&lt;br /&gt;
{{Wiktionary}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Java&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* [https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html Java Tutorial, Primitive Data Types]&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SQL&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* [https://www.postgresql.org/docs/8.3/static/datatype.html Beschreibung der Datentypen] in [[PostgreSQL]] mit Hinweisen auf Standardkonformität nach [[American National Standards Institute|ANSI]]/[[Internationale Organisation für Normung|ISO]] (englisch)&lt;br /&gt;
* [http://dev.mysql.com/doc/refman/5.1/de/data-types.html Kapitel 11. Datentypen] im Referenzhandbuch von [[MySQL]] 5.1&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ada&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* [http://oopweb.com/Ada/Documents/Lovelace/Volume/lesson6.htm oopweb.com]&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Normdaten|TYP=s|GND=4011149-0}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Datentyp| ]]&lt;br /&gt;
[[Kategorie:Programmiersprachelement]]&lt;br /&gt;
[[Kategorie:Datenstruktur]]&lt;/div&gt;</summary>
		<author><name>imported&gt;SchlurcherBot</name></author>
	</entry>
</feed>