Type Casting - Partie 1
Fait partie de la section Fondamentaux du Journey C++ de Coddy — leçon 14 sur 74.
Le transtypage est le processus de conversion d'une valeur d'un type de données à un autre.
En C++, nous pouvons convertir des entiers en doubles, des doubles en entiers, et plus encore. Il existe deux types de transtypage (casting) : le transtypage implicite (automatique) et explicite (manuel).
Par exemple Integer to Double :
Casting implicite (automatique) :
int number = 5;
double decimal = number; // devient automatiquement 5.0
// avec calcul
int x = 7;
double result = x / 2.0; // le résultat est 3.5Remarque : Lors de la division de deux valeurs int, C++ effectue une division entière — la partie décimale est ignorée. Par exemple, 7 / 2 donne 3, et non 3.5. Pour obtenir un résultat décimal, au moins un opérande doit être un double (par exemple, 7 / 2.0 donne 3.5).
Conversion de type (manuelle) explicite Double to Integer :
double decimal = 9.7;
int number = (int) decimal; // devient 9 (la partie décimale est tronquée)
// avec calcul
double price = 19.99;
int roundedPrice = (int) price; // devient 19Style préféré en C++ moderne : Au lieu du transtypage (cast) de style C (int) decimal, il est préférable d'utiliser static_cast<>(), qui est plus sûr et plus explicite quant à votre intention :
double decimal = 9.7;
int number = static_cast<int>(decimal); // devient 9 (la partie décimale est tronquée)
double price = 19.99;
int roundedPrice = static_cast<int>(price); // devient 19Remarque : Les deux (int) value et static_cast<int>(value) produisent le même résultat ici, mais static_cast<>() est l'approche recommandée en C++ moderne car elle rend la conversion clairement visible et est vérifiée par le compilateur.
Défi
DébutantÉcrivez un programme C++ qui démontre le transtypage. Effectuez les opérations suivantes :
Convertissez la variable price en un int et stockez le résultat dans une nouvelle variable nommée intPrice.
Aide-mémoire
Le transtypage (type casting) convertit les valeurs d'un type de données à un autre.
Le transtypage implicite (automatique) — se produit automatiquement :
int number = 5;
double decimal = number; // devient automatiquement 5.0
int x = 7;
double result = x / 2.0; // le résultat est 3.5 (int/int ignore la partie décimale)Le transtypage explicite (manuel) — style C et static_cast moderne :
double price = 19.99;
int a = (int) price; // style C : devient 19
int b = static_cast<int>(price); // préférable en C++ moderne : devient 19Remarque : Le transtypage d'un double en int tronque (supprime) la partie décimale. static_cast<>() est préférable en C++ moderne pour la clarté et la sécurité du compilateur.
Essayez vous-même
#include <iostream>
int main() {
// Déclarer et initialiser les variables
double price = 99.99;
int intPrice = ?; // Conversion explicite de double en int
// Afficher les valeurs
std::cout << "Price: " << price << std::endl;
std::cout << "Int Price: " << intPrice << std::endl;
return 0;
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Fondamentaux
4Opérateurs - Partie 1
Opérateurs arithmétiquesOpérateur moduloIncrémentation / DécrémentationPost-incrémentation / Post-décrémentationRaccourcis arithmétiquesOpérateurs de comparaisonComparaison de chaînes7Bases des entrées/sorties
Instruction coutInstruction cinSaisie de chaînes de caractèresRécapitulatif - Jusqu'à 120Récapitulatif - Vrai ou Faux3Variables - Partie 2
Déclaration de typeConventions de nommageRécapitulatif - Initialisation des variablesType Casting - Partie 1Type Casting - Partie 26Prise de décision
L'instruction IfIf - ElseL'instruction SwitchOpérateur conditionnelRécapitulatif - If ElseIf - Else imbriqués