#include <iostream>
#include <string>

int main()
{
  int number = 7;
  if (1 + 1 == 2)
  {
    std::cout << number << std::endl;  // Ausgabe: 7
    number = 13;
    int number2 = 3;
    std::cout << number2 << std::endl;  // Ausgabe: 3
  }
  std::cout << number << std::endl;  // Ausgabe: 13
//std::cout << number2 << std::endl;  // <- Compilerfehler!

//int number = 22;  // <- Compilerfehler!
  if (2 + 2 == 4)
  {
//  std::cout << number2 << std::endl; // <- Compilerfehler

    // Der Name aus dem vorherigem Block kann neu
    // zugewiesen werden. Die Variablen haben dann aber
    // absolut nichts miteinander zu tun!
    int number2 = 17;
    std::cout << number2 << std::endl;  // Ausgabe: 17

    // Innerhalb eines neuen Gültigkeitsbereich ist es zwar
    // erlaubt, eine neue Variable zu erstellen, deren
    // Namen schon außerhalb verwendet wird.
    // Da es aber verwirrend ist und schnell zu Denkfehlern
    // führen kann, ist es allgemein nicht gern gesehen!
    // Benennen Sie daher die String-Variable um.
    std::string number = "zehn";
    std::cout << number << std::endl;  // Ausgabe: zehn
  }
  std::cout << number << std::endl;  // Ausgabe: 13
  return 0;
}
