Der Begriff ordinaler Datentyp wird in der C-Literatur meist nicht verwendet.
Statt dessen wird mitunter von integralen Datentypen gesprochen.
Die gemeinsamen Eigenschaften werden jedoch in C intensiv genutzt:
Die Werte ordinaler Datentypen sind unmittelbar miteinander verträglich,
zu beachten sind lediglich unterschiedliche Grenzen im Wertebereich.
Für skalare Datentypen sind die zulässigen Operationen durch die Sprachdefinition festgelegt, der Wertebereich wird durch die Sprachdefinition zumindestens umrissen. Der genaue Wertebereich hängt oft vom Sprachübersetzer ab und kann gegebenenfalls durch Parameter beeinflußt werden.
Für eine Variable i mit dem Datentyp Integer existiert im allgemeinen folgender Wertebereich:
-2^(n-1) - 1 <= i <= 2^(n-1) - 1n ist die Länge des Speicherbereiches in Bit, der für die Variable reserviert wird. (^ steht für den - in C nicht vorhandenen - Potenzoperator)
In einigen Sprachen sind Varianten des Datentyps Integer üblich, deren Wertebereich nur nichtnegative ganze Zahlen umfaßt:
0 <= i <= 2^n - 1Gebräuchliche Werte für n sind auch hier 8, 16 und 32.
Variablen mit skalarem Datentyp werden in C/C++ über Anweisungen der folgenden Gestalt deklariert:
datentyp variablenliste;Für datentyp sind einsetzbar:
char Zeichen bzw. ganze Zahlen (8 Bit) signed char unsigned char Zeichen bzw. vorzeichenlose ganze Zahlen (8 Bit) int ganze Zahlen (16 oder 32 Bit) signed signed int short ganze Zahlen (16 Bit) short int signed short signed short int long ganze Zahlen (32 Bit) long int signed long int signed long unsigned vorzeichenlose ganze Zahlen (16 oder 32 Bit) unsigned int unsigned short vorzeichenlose ganze Zahlen (16 Bit) unsigned short int unsigned long vorzeichenlose ganze Zahlen (32 Bit) unsigned long int float reelle Zahlen mit einfacher Genauigkeit (32 Bit) double reelle Zahlen mit doppelter Genauigkeit (64 Bit) long double reelle Zahlen mit erweiterter GenauigkeitDie angegebenen Längen gelten mit hoher Wahrscheinlichkeit für alle C/C++ Implementierungen.
Der genaue Wertebereich der genannten Datentypen unterscheidet sich im allgemeinen - auch bei gleicher Speicherplatzzuweisung - bei verschiedenen C-Systemen !
Beispiel:
In der Header-Datei limits.h werden Grenzwerte für verschiedene
Datentypen definiert, so z.B. SHRT_MIN als kleinster zulässiger
Wert des Datentyps signed short int:
Microsoft C 6.0:
#define SHRT_MIN (-32767)
Borland C++ 4.5
#define SHRT_MIN (-32767-1)