kramann.info
© Guido Kramann

Login: Passwort:










kramann.info
© Guido Kramann

Login: Passwort:




Datentypen in C/C++

(EN google-translate)

(PL google-translate)

Der Umgang mit Variablen in C/C++
  • In C/C++ muss eine Variable deklariert werden, bevor sie das erste mal benutzt werden kann, Beispiel:

int x;


  • Nach der Initialisierung kann man einer Variablen einen Wert zuweisen.
  • Sie kann initialisiert werden:

x=7;


  • Deklaration und Initialisierung können auch in einem Schritt erfolgen.
  • Das nennt man zusammen dann Definition einer Variablen:

int x=7;


  • Es gibt die Möglichkeit mehrere Variablen in einem Befehl zu deklarieren und oder zu initialisieren:

int x,y,z;



int x=2,y=3,z=4;


  • Eine Variable zu deklarieren, veranlasst den Compiler, Speicherplatz für die entsprechende Variable zu reservieren.
  • Es gibt dann genau eine Speicheradresse, unter der der Inhalt genau dieser Variablen abgelegt werden kann und nur diese.
  • Der Name, unter der eine Variable zugreifbar ist, nennt man Bezeichner.
  • Ist eine Variable nicht deklariert, bevor man ihr versucht einen Wert zuzuweisen, so erhält man Compilerfehler. Das entsprechende Programm ist nicht lauffähig.
  • Es gibt in C/C++ verschiedene Datentypen. Bei ganzen Zahlen ist der Datentyp int.
  • Bei der Deklaration steht links der Datentyp und rechts daneben der Bezeichner.
  • Je nachdem, welcher Datentyp für eine Variable verwendet wird, belegt sie unterschiedlich viel Platz im Arbeitsspeicher und es können unterschiedliche Arten an Daten darin gespeichert werden.
  • Es kann vorkommen, dass mehrere Bezeichner auf den gleichen Platz im Arbeitsspeicher verweisen, wenn so genannte Zeiger verwendet werden (siehe Zeiger).
  • Nachfolgend sind einige der einfachen Datentypen bei C/C++ aufgelistet mit jeweiligen Beispielen:
  • Variablen werden im Arbeitsspeicher gemerkt.
  • Variablen belegen im Arbeitsspeicher eine bestimmte Menge an Platz.
  • Die Platzmenge, die gebraucht wird, wird in Anzahl an Bit (ein Platz der eine 1 oder eine 0 aufnehmen kann), oder in Anzahl an Byte (=8 Bit) angegeben.
Bezeichnung Deklaration Initialisierung Beschreibung
short short x; x=-7; Speichern ganzer Zahlen, meist 16Bit, -32768 bis +32767.
int int x; x=-7; Speichern ganzer Zahlen, meist 32Bit, -2147483648 bis +2147483647.
char char c; c='A'; Repräsentation von ASCII-Zeichen in einem Byte, -128 bis 127
unsigned char char x; x=7; Speichern kleiner positiver ganzer Zahlen in einem Byte (0..255)
bool bool w; w=true; Speichern der logischen Wahrheitswerte true (wahr) oder false (falsch)
double double x; x=-3.5; Speichern von Fließkommawerten mit doppelter Genauigkeit (32Bit)
float float x; x=-3.5; Speichern von Fließkommawerten mit einfacher Genauigkeit (16Bit)

Tabelle 0-1: Auswahl einiger einfacher Datentypen in C/C++

Die gemachten Angaben beziehen sich auf einen handelsüblichen PC. Leider ist bei C/C++ die Speicherplatzgröße und damit die Genauigkeit bei Integer-Zahlen,# bzw. die Genauigkeit bei Fließkommazahlen nicht verbindlich festgelegt. Insbesondere ist es typisch, dass int auf einem Mikrocontroller (oder sehr alten PCs) nur in zwei Byte gespeichert werden und damit einen Wertebereich von nur -32768 bis +32767 aufweist.

  • Variablen müssen deklariert sein, bevor sie das erste mal benutzt werden.
  • Um auf eine Variable zugreifen zu können, sei es, um sie auszulesen oder sei es, um sie zu beschreiben, muss der Zugriff auf der gleichen, oder auf einer tieferen Ebene erfolgen.
  • Ebenen werden über geschweifte Klammern definiert.
  • Hier einige Beispiele und Gegenbeispiele:
#include<iostream>
using namespace std;
int main(void)
{
    int x;
    bool erlaubt=true;    
    if(erlaubt)
    {
        x=5;
        cout<<"x="<<x<<endl;
    }
}

Code 0-1: Variante 1.

#include<iostream>
using namespace std;
int main(void)
{    
    bool erlaubt=true;    
    if(erlaubt)
    {
        int x=5;
        cout<<"x="<<x<<endl;
    }
}

Code 0-2: Variante 2.


DIE NACHFOLGENDEN VARIANTEN FUNKTIONIEREN NICHT!:


#include<iostream>
using namespace std;
int main(void)
{    
    bool erlaubt=true;    
    if(erlaubt)
    {
        int x=5;        
    }
    cout<<"x="<<x<<endl;
}

Code 0-3: Variante 3, liefert Compilerfehler!

Variante 3, liefert Compilerfehler!

Bild 0-1: Variante 3, liefert Compilerfehler!

#include<iostream>
using namespace std;
int main(void)
{    
    bool erlaubt=true;    
    x=5;
    if(erlaubt)
    {
        int x;        
        cout<<"x="<<x<<endl;
    }
}

Code 0-4: Auch Variante 4 liefert Compilerfehler.

Auch Variante 4 liefert Compilerfehler.

Bild 0-2: Auch Variante 4 liefert Compilerfehler.