verhindert explizites casting jedes implizite?



  • hi, ich lese gerad den c++ primer, und hier wird folgendes Beispiel aufgeführt:
    int ival = 3.543 + 'a';

    1. 'a' wird durch integrale Promotion auf int gecastet
    2. 'a' wird anschließend auf double gecastet
    3. Arithmetik wird durchgeführt
    4. Ergebnis wird zu int gecastet

    vermeide ich durch...
    int ival = 3.543 + static_cast<double>('a');
    integrale Promotion?

    grüsse
    chris



  • Nein, wieso denn auch? Es besteht immernoch das Problem, dass ein Zeichenliteral zuerst in den korrespondierenden Integer-Wert übersetzt werden muss.



  • Nicht wirklich - der Compiler muß trotzdem einen Weg suchen, um einen char in einen double umzuwandeln, damit er die Rechnung durchführen kann (und der schnellste Weg dafür ist über intergral Promotion und arithmetische Umwandlung). Wenn du etwas beschleunigen willst, lass die Nachkommastellen von 3.543 weg, dann entfällt die Umwandlung nach double und zurück.


Anmelden zum Antworten