In C gibt es nur vier eindeutig benannte Datentypen. char, int, float und double.  char und  int stellen ganze Zahlen dar, während float und double Gleitkommazahlen sind.

Für ganze Zahlen gibt es die Modifikatoren  signed und unsigned, die angeben, ob die Zahl vorzeichenlos ist oder nicht.

Der Datentyp int kann weiterhin die Modifikatoren  short ,  long und long long tragen, um die Bit-Breite des Integers zu ändern. 

Werden nur Modifikatoren ohne Datentyp angegeben, so wird ein Integer als Datentyp angenommen.

Die genaue Bit-Breite von Integern ist massiv Systemabhänig, weshalb ISO-Datentypen aus <stdint.h> importiert werden sollten. Diese tragen ihre genaue Größe und alle Modifikatoren im Namen, und sind so auf allen Systemen gleich. 

Mehr Informationen zu den Basistypen findet sich hier.

#include <stdio.h>
#include <stdint.h>

int main()
{
    // char
    char c1;
    signed char c2;     // equivalent to c1
    unsigned char c3;
    int8_t c4;          // equivalent to c1 and c2
    uint8_t c5;         // equivalent to c3

    // int
    int i1;
    signed int i2;      // equivalent to i1
    unsigned int i3;
    signed i4;          // equivalent to i1 and i2
    unsigned i5;        // equivalent to i3
    int32_t i6;         // equivalent to i1, i2 and i4
    uint32_t i7;        // equivalent to i3 and i5

    // short
    short s1;
    short int s2;           // equivalent to s1
    signed short int s3;    // equivalent to s1 and s2
    unsigned short int s4;
    unsigned short s5;      // equivalent to s4
    int16_t s6;             // equivalent to s1, s2 and s3
    uint16_t s7;            // equivalent to s4 and s5

    // long and long long
    long l1;                    // equivalent to i1 or l6
    long int l2;                // equivalent to l1
    signed long int l3;         // equivalent to l1 and l2
    unsigned long int l4;       // equivalent to i3 or l7
    unsigned long l5;           // equivalent to l4
    long long l6;
    unsigned long long int l7;  // equivalent to l6
    int64_t l8;                 // equivalent to l1, l2, l3 and l6
    uint64_t l9;                // equivalent to l4, l5 and l7

    // float & double
    float f1;
    float_t f2;         // equivalent to f1 or f3
    double f3;
    double_t f4;        // equivalent to f3 or f5
    long double f5;     // equivalent to f4 or extra type

    // special types
    size_t size;
    intptr_t intptr;
    uintptr_t uintptr;
    ptrdiff_t ptrdiff;

    return 0;
}
Last modified: Friday, 25 May 2018, 3:11 PM