3

Click here to load reader

Datentypen in C und C++ - Universität Regensburg · 4. Regeln 3 domain und complex type domain, die Zahlen ohne und mit Imagin arteil bezeichnen. standard inte-ger sind die vom Standard

  • Upload
    lynga

  • View
    212

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Datentypen in C und C++ - Universität Regensburg · 4. Regeln 3 domain und complex type domain, die Zahlen ohne und mit Imagin arteil bezeichnen. standard inte-ger sind die vom Standard

Datei: svn/ckurs/trunk/c\_texte/c_typen.tex, Datum: 30. Juni 2015

Datentypen in C und C++

1. Ubersicht

Die folgende Ubersicht zeigt alle C- und C++-Datentypen. Kursiv gedruckt finden Sie wichtige C-Bezeichnungen, die jedoch nicht direkt in Programmen stehen durfen, nichtproportional gedrucktWorter aus dem C-Wortschatz. (Optionale Teilbezeichnungen) wurden eingeklammert..

scalar types

arithmetic types

real types (real type domain) complex type domain

integer types (integral types)

basic types

standard integer

signed integer unsigned integer floating typesstandard signed integer standard unsigned integer real floating complex complex floating

Bool

character typeschar signed char unsigned char

short (int) unsigned short (int) float float Complex

int unsigned (int) double double Complex

long (int) unsigned long (int) long double long double Complex

long long (int) unsigned long long (int)

extended signed integer extended unsigned integerextended integer

enum enumerated types (Aufzahlung)

pointer type (Zeiger)

void array type function type derived declarator type

struct union derived type

aggregate type

Page 2: Datentypen in C und C++ - Universität Regensburg · 4. Regeln 3 domain und complex type domain, die Zahlen ohne und mit Imagin arteil bezeichnen. standard inte-ger sind die vom Standard

2. Beschreibung als Mengen 2

2. Beschreibung als Mengen

Die angegebenen Grenzen wie CHAR MIN sind fur ganze Zahlen in <limits.h> und fur reelle Zahlen infloat.h> zu finden.void {} leere MengeBool {0, 1} logische Wertechar {x ∈ Z|CHAR MIN≤ x ≤CHAR MAX} basic execution character setsigned char {x ∈ Z|SCHAR MIN≤ x ≤SCHAR MAX} kleinste Zahlenmenge mit Vorzeichenunsigned char {x ∈ Z|0 ≤ x ≤ UCHAR MAX} kleinste Zahlenmenge ohne Vorzeichenshort {x ∈ Z|SHRT MIN≤ x ≤SHRT MAX} kleine Zahlenmenge mit Vorzeichenunsigned short {x ∈ Z|0 ≤ x ≤ USHRT MAX} kleine Zahlenmenge ohne Vorzeichenint {x ∈ Z|INT MIN≤ x ≤INT MAX} normale Zahlenmenge mit Vorzeichenunsigned int {x ∈ Z|0 ≤ x ≤ UINT MAX} normale Zahlenmenge ohne Vorzeichenlong {x ∈ Z|LONG MIN≤ x ≤LONG MAX} große Zahlenmenge mit Vorzeichenunsigned long {x ∈ Z|0 ≤ x ≤ ULONG MAX} große Zahlenmenge ohne Vorzeichenlong long {x ∈ Z|LLONG MIN≤ x ≤LLONG MAX} sehr große Zahlenmenge mit Vorzeichenunsigned long long {x ∈ Z|0 ≤ x ≤ULLONG MAX} sehr große Zahlenmenge ohne Vorzeichenfloat {±x ∈ IR|0,FLT MIN≤ x ≤FLT MAX} ⊃ {1, 1 + ε} kleine diskrete Teilmenge von IR, ε =FLT EPSILON

double {±x ∈ IR|0,DBL MIN≤ x ≤DBL MAX} ⊃ {1, 1 + ε} normale diskrete Teilmenge von IR, ε =DBL EPSILON

long double {±x ∈ IR|0,LDBL MIN≤ x ≤LDBL MAX} ⊃ {1, 1 + ε} große diskrete Teilmenge von IR, ε =LDBL EPSILON

M Complex {z = x+ iy ∈ C|x, y ∈ M} diskrete Teilmenge von C, M=float, double, long double

3. Bibliothekstypen

In der C-Bibliothek werden eine Reihe abgeleiteter Typen fur spezielle Zwecke (meist in Verbindung mitder entsprechenden Bibliothek) definiert.wchar t <stddef.h> Wertebereich fur großte Zeichenmengenchar16 t <uchar.h> Wertebereich fur 16-Bit Zeichenmengenchar32 t <uchar.h> Wertebereich fur 32-Bit Zeichenmengensize t <stddef.h> W. fur sizeof-Ergebnisseptrdiff t <stddef.h> W. fur Zeigerdifferenzenbool <stdbool.h> Bool = {false true}complex <complex.h> ComplexFILE <stdio.h> Dateibeschreibungfpos t <stdio.h> Dateipositionendiv t <stdlib.h> int Divisionsergebnis mit Restldiv t <stdlib.h> long Divisionsergebnis mit Restlldiv t <stdlib.h> long long Divisionsergebnis mit Restimaxdiv t <inttypes.h>intmax t Divisionsergebnis mit Restclock t <time.h> W. fur Rechenzeittime t <time.h> W. fur Uhrzeitstruct tm <time.h> W. fur Uhrzeit im Klartextwint t <wchar.h> intType fur große Zeichennummernwctrans t <wctype.h> Lokale Zeichenabbildungenwctype t <wctype.h> Lokale Zeichenklassifikationenviele <stdint.h> Flexibilitat in Bitanzahlen ganzer Zahlenintmax t <stdint.h> Ganze Zahl mit maximaler Bitanzahlva list <stdarg.h> Ellipsenparametersig atomic t <.h> Signal handlingjmp buf <setjmp.h> Restoring calling env.float t <math.h> Fexibilitat in Bitanzahlen reeller Zahlendouble t <math.h> Fexibilitat in Bitanzahlen reeller Zahlenstruct lconv<locale.h> Lokalisierungsinformationenfenv t <fenv.h> entire floating-point environmentfexcept t <fenv.h> floating-point status flags

4. Regeln

1. Es gibt mehrere sich gegenseitig ausschließende Mengenpaare mit jeweils den entsprechenden Eigen-schaften. signed und unsigned Typen enthalten ein bez. kein Vorzeichen. integral types beschreibenverschiedene Teilmengen ganzer Zahlen (ohne Dezimalpunkt, exakte Arithmetik), floating types be-schreiben verschiedene Teilmengen komplexer (C99) bez. reeller (C89) Zahlen (mit Dezimalpunkt,Arithmetik mit Rundungsfehlern). Im C99 Standard gibt es zusatzlich die beiden Begriffe real type

Page 3: Datentypen in C und C++ - Universität Regensburg · 4. Regeln 3 domain und complex type domain, die Zahlen ohne und mit Imagin arteil bezeichnen. standard inte-ger sind die vom Standard

4. Regeln 3

domain und complex type domain, die Zahlen ohne und mit Imaginarteil bezeichnen. standard inte-ger sind die vom Standard vorgeschriebenen, extended integer die compilerspezifischen Erweiterungender integral types. arithmetic types beschreiben unmittelbar Wertebereiche fur Variable; derived ty-pes setzen sich in verschiedener Hinsicht aus Einzelbestandteilen zusammen, die mit anderen Typen(arithmetic oder derived) beschrieben werden.

Mengenpaar Obermengestandard signed standard unsigned standard integer

signed unsigned standard integer∪extended integerstandard integer extended integer integral types\enumintegral types floating types

real type domain complex type domain arithmetic typesreal floating complex floating floating types

arithmetic types derived types

2. In den drei Teilmengen integral types, real floating types und complex floating types darf der Spei-cherplatz einzelner Variabler von oben nach unten nicht kleiner werden (Standardforderung an dieCompiler). Eine short belegt mindestens den Platz einer char-Variablen, eine int mindestens denPlatz einer short-Variablen, eine double mindestens den Platz einer float-Variablen, usw. Diegenaue Große im Rahmen dieser Regel wird vom Compilerhersteller festgelegt.

3. In der Teilmenge integral types ist der Speicherplatz einzelner Variabler von links nach rechts identisch(Standardforderung an die Compiler). Eine short belegt exakt denselben Speicherplatz wie eineunsigned short, usw.

4. Bei den signed Typen wird ein Bit fur das Vorzeichen abgezweigt, die Zahlen durfen negativ werden,der Wertebereich im positiven Bereich ist dafur kleiner.

5. Bei den unsigned Typen werden alle Bits fur Dualstellen verwendet, die Zahlen sind ≥ 0, derWertebereich im positiven Bereich ist großer. Da diese Zahlen meist in der Systemprogrammierungverwendet werden, gibt es weder Uberlauf noch Unterlauf (analog zum Kilometerzahler beim Auto).

6. char ist entweder signed char oder unsigned char; die Entscheidung trifft der Compilerhersteller.char dient eher zur ASCII-Zeichenverarbeitung, signed char und unsigned char dienen eher zumRechnen mit sehr kleinen Zahlen. char ist außerdem in C definitionsgemaß die kleinste adressierbareSpeichereinheit (sizeof (char) ≡ 1).

7. void bezeichnet die leere Menge und dient z.B. bei Funktionen zur Kennzeichnung leerer Argument-listen oder fehlender Ergebnisse (void f (void);). Es kann mit nichts ubersetzt werden. void∗ist in C der unqualifizierte Zeiger, bei dem der Typ der Bezugsvariablen nicht festgelegt wird. Einevoid∗-Variable zeigt auf alles mogliche. void heißt also in C alles oder nichts.

8. wchar t ist ein Bibliothekstyp. Er dient zum Speichern von Schriftzeichen, die die Menge allerlokalen Schriftzeichenvarianten umfassen, derzeit meistens 16-Bit-Schriftzeichen.

9. Bool und Complex sind neue C99-Typen fur boolesche (in C89 int) bez. komplexe (in C89 nichtvorhanden) Variable. Die Schreibweise (mit Unterstrich und großem Anfangsbuchstaben) verstoßtzwar gegen C-Konventionen, sie verhindert jedoch, daß alte Programme nicht mehr ubersetzt werdenkonnen, weil der Programmierer selbst boolesche Variable oder komplexe Zahlen programmiert hat.

10. Bei Benutzung der Bibliothek <complex.h> steht auch der Typ complex (statt Complex) zurVerfugung und kann normal verwendet werden (double complex z;). Bei Benutzung der Bibliothek<stdbool.h> steht auch der Typ bool (statt Bool) zur Verfugung.