robert filatow logo
type casting typumwandlung

Deutschland sucht den Datentyp – Type Casting Grundlagen in C++

Was du kennen solltest:

  • Datentypen in C++ (int, float, char)
  • Zeiger(juhuuu)
  • Ausgabe von Text in der Console(cout und endl)

Was versteht man unter Type Casting?

Wenn ein Ausdruck von einem Datentyp in einen anderen umgewandelt wird, dann nennt man das type-casting.
Dabei spielt vor allem die Kompatibilität von Datentypen eine Rolle, denn nicht immer kann umgewandelt werden(zum Beispiel bei zwei verschiedenen Klassen).
Dabei wird zwischen der Implicit conversion und der Explicit conversion unterschieden.

Implicit conversion

Die implizite Konversion wird automatisch durchgeführt, wenn ein Wert von einem anderen Datentyp, einem kompatiblen Datentyp zugewiesen wird.

int main()
{
    float  a = 2.5;
    int b;
    b = a;
    std::cout << b << std::endl;
    return 0;
};

2

Obwohl a eine Fließkommezahl ist, wird float zu int umgewandelt und die Konsole gibt 2 aus. Das funktioniert auch in die andere Richtung.

int main()
{
    char buchstabe = 'E';
    int zahl;
    zahl = buchstabe;
    std::cout << zahl  << std::endl;
    return 0;
};

69

Nice. Du siehst, auch der char wird in ein int umgewandelt. In der ASCII – Tabelle entspricht nämlich der Großbuchstabe E der Zahl 69. (Siehe ASCII -Tabelle). Man kann auch ein int in ein char umwandeln.

Explicit conversion

In den Beispielen mussten wir nichts weiter tun, damit der Datentyp umgewandelt wird. Aber wir könnten auch explizit die Typumwandlung durchführen, indem wir den Datentyp in Klammern vor den Bezeichnernamen setzen:

Beispiel ohne expliziter Typumwandlung

int main()
{
    int a = 2;
    int b = 4;
    float ergebnis =  a / b;
    std::cout << ergebnis << std::endl;
    return 0;
};

0

Es wird 0 in der Konsole ausgegeben. Syntaktisch ist das nicht falsch, doch wir erhalten nicht das gewünschte Ergebnis.

Beispiel mit expliziter Typumwandlung

int main()
{
    int a = 2;
    int b = 4;
    float ergebnis = (float ) a / (float) b; //
    float gehtAuch = float  (a) / float (b);
    std::cout << ergebnis << std::endl;
    std::cout << gehtAuch << std::endl;
    return 0;
};

0.5
0.5

Was wir machen müssen, ist eine explizite Typumwandlung durchzuführen. Das können wir einmal machen indem wir den Datentypen in Klammern vor den Bezeichnernamen setzen, oder indem wir den Datentypen ohne Klammern schreiben und den Bezeichner in Klammern setzen. Beides ist möglich.

Hat dir der Inhalt gefallen?

Falls du mehr zu Themen der Informatik lesen willst, kannst du die Suche dafür verwenden:


Du bist der Meinung, das war der Beste Beitrag zum Thema Informatik den du jemals gelesen hast? Dann ist die einzig logische Schlussfolgerung, diesen Beitrag mit deinen Kommilitonen zu teilen. Oder auch nicht mach was du willst, ich bin nicht dein Dad.

TAGS

© 2023. All rights reserved. Website made by Robert Filatow