Datentypen und Variablen in C++

In dieser Lektion werden die Datentypen, Variablen und deren Eigenschaften in C++ behandelt. Ziel ist, die Unterschiede zu C zu verstehen, Speicher, Wertebereiche und Typumwandlungen zu erkennen und moderne C++-Konzepte zu nutzen.

1. Grundtypen

Definition: Grundtypen in C++ legen fest, welche Art von Daten eine Variable speichert und wie viel Speicher dafür reserviert wird.
Beispiel:
#include <iostream>
#include <string>

int main() {
    int alter = 21;
    char initial = 'A';
    float temperatur = 36.6f;
    double pi = 3.14159265359;
    bool aktiv = true;
    std::string name = "Max";

    std::cout << "Name: " << name << ", Alter: " << alter << std::endl;
    return 0;
}

2. Modifikatoren

Modifikatoren verändern Größe und Vorzeichen von Variablen.
unsigned int positiveZahl = 300;
long int grosseZahl = 1000000000;
short int kleineZahl = -100;

std::cout << "Positive Zahl: " << positiveZahl << std::endl;

3. Konstanten

Konstanten sind unveränderliche Variablen. Verwendung von const schützt Werte vor unbeabsichtigter Änderung.
const int MAX_VERBRAUCH = 100;
const double G = 9.81;
std::cout << "Maximalverbrauch: " << MAX_VERBRAUCH << std::endl;

4. Literaltypen

Literale sind feste Werte im Code.

5. Variablendeklaration

Variablen müssen vor der Nutzung deklariert werden. Die Syntax lautet: Typ Name [= Initialwert];
int a;            // Deklaration
a = 5;              // Zuweisung
double b = 2.71;    // Deklaration + Initialisierung
std::string text = "Hallo C++";

6. Speicher und Gültigkeitsbereich

Variablen existieren im Speicher mit bestimmten Bereichen (Scope):
int globalVar = 10; // global

void test() {
    int lokal = 5;          // lokal
    static int counter = 0; // statisch
    counter++;
    std::cout << "Counter: " << counter << std::endl;
}

7. Typumwandlung (Casting)

C++ erlaubt implizite und explizite Typumwandlungen.
int a = 5;
double b = 2.5;
double sum = a + b;       // implizit: a wird zu double
int c = static_cast<int>(b); // explizit: cast zu int
std::cout << "Summe: " << sum << ", c: " << c << std::endl;
Implizite Umwandlungen können zu Rundungsfehlern führen. Explizite Casts geben volle Kontrolle.

8. Zusammenfassung