Unterschied zwischen Implizite und Explizite Typumwandlung(Casts)



  • Hallo liebes Forum,

    soweit wie ich verstanden habe gibt es Typumwandlungen womit ich z.B. int Wert in float oder umgedreht konvertieren kann. Nun meine Frage: Wo ist der Unterschied zwischen der Impliziten und der Explizten konvertierung?

    Zero_x 🙂



  • implizit:

    float f = 8;
    

    explitit:

    int i = 8;
    float f = (float)i;
    


  • zwutz schrieb:

    explitit:

    int i = 8;
    float f = (float)i;
    

    Ürg. Bitte lasst doch diese beschissenen C-Casts nicht ins C++-Forum. In C++ regelt man das über einen 'static_cast', wobei der in diesem Fall überflüssig ist, da die implizite Umwandlung hier ja existiert. Folgendes wäre sinnvoller (da nicht anders möglich):

    float f = 8.0f;
    int i = static_cast<int>(f);
    


  • Hallo Konrad Rudolph,

    noch eine kleine Frage: Wo sind die Unterschiede zwischen explizit und implizit?

    Zero_x 🙂



  • zero_x schrieb:

    noch eine kleine Frage: Wo sind die Unterschiede zwischen explizit und implizit?

    Sollte man doch sehen: implizite Umwandlungen werden implizit vorgenommen, also ohne, dass sie im Code stehen, explizite hingegen stehen explizit als Cast-Anweisung im Code.



  • Konrad Rudolph schrieb:

    Folgendes wäre sinnvoller (da nicht anders möglich):

    float f = 8.0f;
    int i = static_cast<int>(f);
    

    Es führt einfach zu einer Warnung, weil Daten verloren gehen. Deshalb ist der Cast auch zu empfehlen. Aber möglich ist folgendes auf jeden Fall:

    float f = 8.0f;
    int i = f;
    

Log in to reply