Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> C Sprache

C-Datentypen verstehen: Umfassender Leitfaden

Datentypen in C beziehen sich auf ein umfangreiches System zur Deklaration von Variablen oder Funktionen verschiedener Typen. Der Typ einer Variablen bestimmt, wie viel Speicherplatz sie belegt und wie das gespeicherte Bitmuster interpretiert wird.

Die Typen in C können wie folgt klassifiziert werden:

Nr.Typen & Beschreibung
1Grundtypen (Basic Types) – Arithmetische Typen, unterteilt in: (a) Ganzzahltypen und (b) Gleitkommatypen.
2Aufzählungstypen (Enumerated types) – Ebenfalls arithmetische Typen, definieren Variablen, die nur bestimmte diskrete Ganzzahlwerte annehmen können.
3Der Typ void – Der Typspezifizierer void zeigt an, dass kein Wert verfügbar ist.
4Abgeleitete Typen (Derived types) – Enthalten: (a) Zeigertypen, (b) Arraytypen, (c) Strukturtypen, (d) Union-Typen, (e) Funktionstypen.

Array- und Strukturtypen werden zusammenfassend als aggregierte Typen bezeichnet. Der Typ einer Funktion spezifiziert den Rückgabetyp der Funktion. Im Folgenden betrachten wir die Grundtypen; andere Typen folgen in späteren Kapiteln.

Ganzzahltypen (Integer Types)

Die folgende Tabelle zeigt die Standard-Ganzzahltypen mit Speichergrößen und Wertebereichen (typisch für 64-Bit-Systeme):

TypSpeichergrößeWertebereich
char1 Byte-128 bis 127 oder 0 bis 255
unsigned char1 Byte0 bis 255
signed char1 Byte-128 bis 127
int4 Bytes-2.147.483.648 bis 2.147.483.647
unsigned int4 Bytes0 bis 4.294.967.295
short2 Bytes-32.768 bis 32.767
unsigned short2 Bytes0 bis 65.535
long8 Bytes (4 Bytes auf 32-Bit)-9.223.372.036.854.775.808 bis 9.223.372.036.854.775.807
unsigned long8 Bytes0 bis 18.446.744.073.709.551.615

Um die genaue Größe eines Typs oder einer Variablen auf einer bestimmten Plattform zu ermitteln, verwenden Sie den sizeof-Operator. Der Ausdruck sizeof(typ) liefert die Speichergröße in Bytes. Beispiel mit Konstanten aus limits.h und float.h:

#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <float.h>

int main(int argc, char** argv) {
    printf("CHAR_BIT  : %d\n", CHAR_BIT);
    printf("CHAR_MAX  : %d\n", CHAR_MAX);
    printf("CHAR_MIN  : %d\n", CHAR_MIN);
    printf("INT_MAX   : %d\n", INT_MAX);
    printf("INT_MIN   : %d\n", INT_MIN);
    printf("LONG_MAX  : %ld\n", (long) LONG_MAX);
    printf("LONG_MIN  : %ld\n", (long) LONG_MIN);
    printf("SCHAR_MAX : %d\n", SCHAR_MAX);
    printf("SCHAR_MIN : %d\n", SCHAR_MIN);
    printf("SHRT_MAX  : %d\n", SHRT_MAX);
    printf("SHRT_MIN  : %d\n", SHRT_MIN);
    printf("UCHAR_MAX : %d\n", UCHAR_MAX);
    printf("UINT_MAX  : %u\n", (unsigned int) UINT_MAX);
    printf("ULONG_MAX : %lu\n", (unsigned long) ULONG_MAX);
    printf("USHRT_MAX : %d\n", (unsigned short) USHRT_MAX);
    return 0;
}

Typische Ausgabe auf Linux (64-Bit):

CHAR_BIT  : 8
CHAR_MAX  : 127
CHAR_MIN  : -128
INT_MAX   : 2147483647
INT_MIN   : -2147483648
LONG_MAX  : 9223372036854775807
LONG_MIN  : -9223372036854775808
SCHAR_MAX : 127
SCHAR_MIN : -128
SHRT_MAX  : 32767
SHRT_MIN  : -32768
UCHAR_MAX : 255
UINT_MAX  : 4294967295
ULONG_MAX : 18446744073709551615
USHRT_MAX : 65535

Gleitkommatypen (Floating-Point Types)

Details der Standard-Gleitkommatypen mit Speichergrößen, Wertebereichen und Genauigkeit:

TypSpeichergrößeWertebereichGenauigkeit
float4 Byte1.2E-38 bis 3.4E+386 Dezimalstellen
double8 Byte2.3E-308 bis 1.7E+30815 Dezimalstellen
long double16 Byte (oft 10/12/16)3.4E-4932 bis 1.1E+493219+ Dezimalstellen

Die Header-Datei float.h definiert Makros für diese Werte. Beispiel:

#include <stdio.h>
#include <float.h>

int main() {
    printf("Speichergröße für float : %zu \n", sizeof(float));
    printf("FLT_MAX : %g\n", FLT_MAX);
    printf("FLT_MIN : %g\n", FLT_MIN);
    printf("DBL_MAX : %g\n", DBL_MAX);
    printf("DBL_MIN : %g\n", DBL_MIN);
    printf("Precision (FLT_DIG): %d\n", FLT_DIG);
    return 0;
}

Der void-Typ

Der void-Typ spezifiziert, dass kein Wert verfügbar ist. Er wird in drei Situationen verwendet:

Nr.Typ & Beschreibung
1Funktionen mit void-Rückgabe – Funktionen, die keinen Wert zurückgeben. Beispiel: void exit(int status);
2Funktionsargumente als void – Funktionen ohne Parameter. Beispiel: int rand(void);
3Zeiger auf void – void * repräsentiert die Adresse eines Objekts ohne dessen Typ. Beispiel: void *malloc(size_t size); gibt einen Zeiger zurück, der in jeden Datentyp umgewandelt werden kann.

C Sprache

  1. Elektrische Schalter verstehen: Typen, Funktionen und Anwendungen
  2. C# Variablen & Primitive Datentypen meistern: Der komplette Guide
  3. C++-Datentypen verstehen: Grundlagen, Modifizierer und Best Practices
  4. C Datentypen erklärt: int, float, char und mehr – Ein vollständiger Leitfaden
  5. Python-Datentypen meistern: Praxisleitfaden
  6. Java Primitive Datentypen: Vollständiger Leitfaden mit Beispielen
  7. C Variablen, Datentypen und Konstanten – Ein praktischer Leitfaden
  8. 5 Rechenzentrums-Modelle erklärt: Design, Use Cases & Beispiele
  9. 8 Schlüssel-Cloud-Computing-Modelle 2021
  10. 8 häufige Datenschutzverletzungsarten – reale Beispiele & Auswirkungen