//+------------------------------------------------------------------
//|
//| Projekt              : Kapitel1 - DatentypenAtomar
//| Versionsnummer       : V1.00
//| Projektbeschreibung  : Vorstellung der wichtigsten Atomaren
//|                      : Datentypen unter C
//|
//| Autor                : Salomo Sokoll - ss@salomo-sokoll.de
//| Programmierung mit C und C++ ohne ideologischen Ballast
//| https://salomo-sokoll.de/Buch/C_CPP/index.html
//|
//+------------------------------------------------------------------

// Einbinden aller benötigten Header-Dateien (.h)
#include "stdio.h"
#include "inttypes.h"
#include "math.h"

int main( )
{

    // *
    // ** Integer (Ganze Zahlen)
    // *

    // Integer mit 8 Bit Breite
    int8_t      Test_Vozeichen_8        = -100;
    uint8_t     Test_Vozeichenlos_8     =  250;

    printf( "int8_t   = %d\n", Test_Vozeichen_8 );
    printf( "uint8_t  = %u\n", Test_Vozeichenlos_8 );

    // Integer mit 16 Bit Breite
    int16_t     Test_Vozeichen_16       = -32000;
    uint16_t    Test_Vozeichenlos_16    =  60000;

    printf( "int16_t  = %d\n", Test_Vozeichen_16 );
    printf( "uint16_t = %u\n", Test_Vozeichenlos_16 );

    // Integer mit 32 Bit Breite
    int32_t     Test_Vozeichen_32       = -1000000;
    uint32_t    Test_Vozeichenlos_32    =  4000000000;

    printf( "int32_t  = %d\n", Test_Vozeichen_32 );
    printf( "uint32_t = %u\n", Test_Vozeichenlos_32 );

    // Integer mit 64 Bit Breite
    int64_t     Test_Vozeichen_64       = -4000000000000;
    uint64_t    Test_Vozeichenlos_64    =  8000000000000;

    printf( "int64_t  = %lld\n", Test_Vozeichen_64 );
    printf( "uint64_t = %llu\n", Test_Vozeichenlos_64 );

    // *
    // ** Gleitkommazahl (5 Stellen Genauigkeit, ab der 6. gerundet)
    // ** Einfache Genauigkeit
    // *

    float    Test_Gleit32    =  M_PI;

    printf( "float       = %.6f\n", Test_Gleit32 );

    // *
    // ** Gleitkommazahl (15 Stellen Genauigkeit, ab der 16. gerundet)
    // ** Doppelte Genauigkeit
    // *

    double    Test_Gleit64    =  M_PI;

    printf( "double      = %.15f\n", Test_Gleit64 );

    // *
    // ** Gleitkommazahl (Ab 18 Stellen Genauigkeit)
    // ** Erhöhter Doppelte Genauigkeit
    // ** Achtung: Dieser Typ wird je nach System/Compiler unterschiedlich behandelt
    // *

    long double    Test_Gleit128    =  M_PI;

    printf( "long double = %.18Lf\n", Test_Gleit128 );


    return( 0 );
}

