Menu
Coddy logo textTech

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

Remarque : 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 19

Style 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 19

Remarque : 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.

challenge icon

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 19

Remarque : 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;
}
quiz iconTestez-vous

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