Programmiersprache C/C++

Skalare Datentypen

In den meisten Programmiersprachen übliche skalare Datentypen sind: Integer, Boolean und Char werden auch als ordinale (abzählbare) oder diskrete Datentypen charakterisiert. Als ordinal sind alle Datentypen anzusehen, deren Wertebereich sich eineindeutig auf den Wertebereich von Integer abbilden läßt. Alle zu einem ordinalen Datentyp gehörenden Werte sind geordnet.

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) - 1
n ist die Länge des Speicherbereiches in Bit, der für die Variable reserviert wird. (^ steht für den - in C nicht vorhandenen - Potenzoperator)
Gebräuchliche Werte für n sind 8, 16 und 32, in selteneren Fällen ist auch 64 möglich (in C unüblich).

In einigen Sprachen sind Varianten des Datentyps Integer üblich, deren Wertebereich nur nichtnegative ganze Zahlen umfaßt:

   0  <=  i  <=  2^n - 1
Gebräuchliche Werte für n sind auch hier 8, 16 und 32.
C unterstützt solche Varianten standardmäß (unsigned).

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 Genauigkeit 
Die angegebenen Längen gelten mit hoher Wahrscheinlichkeit für alle C/C++ Implementierungen.
Am unsichersten ist diesbezüglich zur Zeit long double. Möglich sind z.B. 64 Bit (identisch mit double), 80 Bit (PC mit mathematischem Koprozessor) oder 128 Bit.

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)

Zurück zum Menü
Zurück zur vorigen Seite Weiter zur nächsten Seite

P. Böhme, 03.01.1996