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 gecastetvermeide 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.