2010-11-12 5 views
3

possible en double:
Is there any difference between type casting & type conversion?Quelles sont les significations de * cast * et * conversion *?

j'utilise les termes fonte et conversion interchangeable. Est-ce exact? Sinon, quelle est la différence?

+0

Strictement, pedantically, ils ne sont pas les mêmes. Mais les gens le font tout le temps. –

+0

Ceci est une dupe d'une question avec une réponse par coppro. –

+2

Voir http://stackoverflow.com/questions/1374325/is-there-any-difference-between-type-casting-type-conversion –

Répondre

3

conversion implique la construction de type A à partir d'une instance d'un type différent de B.

de coulée implique l'utilisation de l'un ou l'autre des opérateurs de coulée C++ multiple, ou une distribution de style C.

0

La conversion implique la prise d'une valeur d'un type spécifique et l'exécution de certaines fonctions pour fournir une représentation dans un autre type. Casting dit simplement "supposons que ces données sont dans ce nouveau type". Certains cas impliquent implicitement des conversions, donc je pense que c'est un peu interchangeable.

+0

La conversion peut entraîner une conversion, bien qu'il ne s'agisse pas simplement de supposer que les données sont dans le nouveau type. Dans l'exemple que j'ai donné plus haut, 23.0 est converti en int avant d'être stocké dans i. –

+0

@sgolodetz - d'où ma dernière phrase à propos de certaines conversions impliquant (pour le compilateur) qu'une conversion devrait avoir lieu. – jball

+0

Non correct dans le contexte de C et C++. –

3

Je ne pense pas qu'ils soient identiques - une distribution force le compilateur à effectuer une conversion explicite, mais vous pouvez également avoir des conversions implicites, par exemple.

double d = 23; // implicit conversion from int to double 

Versus:

int i = static_cast<int>(23.0); // explicit conversion from double to int 
+0

Il y a une conversion implicite de 'double' en' int' en C++. –

+0

@James: Exemple mal choisi dans ce cas, désolé. –

0

Une distribution est un type spécial de conversion. Un autre type est celui effectué par des fonctions comme atoi et itoa, et les flux de chaînes. Encore un autre type serait quelque chose comme ceci:

int minutes_to_seconds(int minutes) { return minutes * 60; } 
Questions connexes