static_cast<double>(float) sinnvoll
-
Hi,
möglicherweise eine blöde Frage, aber mich würde interessieren, in welchen Fällen/aus welchen Gründen es sinnvoll ist einen expliziten cast von float in double durchzuführen (siehe Titel). Oder kann man sich bedenkenlos auf die implizite Umwandlung verlassen und castet nur dann explizit, wenn man jedermann kenntlich machen will, dass der Datentyp gewandelt wird.
Habe das kürzlich in einem Codeauszug gelesen und war ein wenig verwundert.Danke vorab!
-
#include <iostream> void doIt(float a){ std::cout << "float" << std::endl; } void doIt(double a){ std::cout << "double" << std::endl; } int main(int argc, char *argv[]){ float a = 0.0; doIt(a); doIt(static_cast<double>(a)); }
-
der implizite cast wird nat*rlich nur durchgef*hrt, wenn es notwendig ist.
-
Gutes Beispiel, danke für die schnellen Antworten!
Ich glaube, ich war deswegen irritiert, weil ich einen solchen cast in einem Konstruktor-Aufruf gesehen habe, in dem ein double verlangt, aber ein float (bzw. static_cast<double>(float)) übergeben wird. Dort ist die Umwandlung notwendig, der implizite cast wird also in jedem Fall durchgeführt und macht keine Probleme.
-
So ein Cast ist an vielen Stellen nötig wo man vielleicht meinen könnte er wäre es nicht:
void foo(int); void foo(double); void test() { float a = 0; foo(a); // geht nicht }