Quel est exactement un type cast en C/C++?

Ce qui est exactement un type cast en C/C++? Comment le compilateur de vérifier si un transtypage explicite est nécessaire (et valide)? Est-il comparer l'espace requis pour une valeur? Si j'ai par exemple:

int a;
double b = 15.0;
a = (int) b;

Si je me souviens bien un double de la valeur nécessite plus d'espace (il était de 8 octets?!) qu'un entier (4 octets). Et la représentation interne de tous les deux sont complètement différents (complément à deux/mantisse). Donc ce qui se passe à l'interne? L'exemple ici est assez simple, mais en C/C++ nombreux sont les typecasts.

Comment le compilateur de savoir (ou programmeur) si je lance par exemple FOO BAR?

  • Toute explication de type diffuse doit inclure standard conversions conversions définies par l'utilisateur, reinterpret_cast, const_cast, upcasts, downcasts, de la croix-plâtres, RTTI, et les types de valeur. (Et je crois que j'ai oublié un sujet).
  • double possible de Quand doit-static_cast, dynamic_cast et reinterpret_cast être utilisé?
  • Je crois que j'ai mentionné la grande majorité d'entre eux, à mon humble réponse, mais pas de (relativement concis) réponse peut éventuellement être considérée comme complète.
  • Votre <strike>répondre</strike> modifier n'avait pas encore manifesté quand j'ai écrit que, il y avait juste deux réponses très brèves, qui portait sur des double->int conversions.
  • oui, il a fallu un certain temps pour améliorer ma réponse avec plus de détails peut-être que ce qui était demandé. Mais, j'en suis venu à la même réalisation que vous et a décidé que le niveau de détail est nécessaire d'essayer de venir avec un peu de réponse complète à la question générale.
InformationsquelleAutor pluckyDuck | 2011-09-26