Type Casting Partie 1
Fait partie de la section Fundamentals du Journey C de Coddy — leçon 13 sur 63.
Le transtypage en C vous permet de convertir une valeur d'un type de données à un autre. C'est utile lorsque vous devez effectuer des opérations entre différents types de données.
Il existe deux principaux types de conversion de type (type casting) :
- Conversion implicite (automatique)
- Conversion explicite (manuelle)
Commençons par le transtypage implicite :
Le transtypage implicite se produit automatiquement lors de la conversion d'un type de données plus petit vers un type plus grand :
int num = 10;
double decimal_num;
// Transtypage implicite de int vers double
decimal_num = num;Après l'exécution du code ci-dessus, decimal_num aura la valeur 10.0
Cela fonctionne parce qu'un double peut stocker toutes les valeurs possibles d'un int sans perdre de données. La conversion est sûre, donc le C le fait automatiquement.
Chemins de transtypage implicite courants :
- char → int → long → float → double
Maintenant, examinons le transtypage explicite :
Le transtypage explicite se fait manuellement en plaçant le type de données cible entre parenthèses avant la valeur que vous souhaitez convertir. Cela est nécessaire lors de la conversion d'un type de données plus grand vers un plus petit, où une perte de données peut se produire :
double decimal_num = 5.65;
int num;
// Transtypage explicite de double vers int
num = (int)decimal_num;Après l'exécution du code ci-dessus, num aura la valeur 5
Remarquez que la partie décimale est tronquée (et non arrondie) lors du transtypage d'un double vers un int. La syntaxe pour le transtypage explicite est :
(target_type) valueParce que cette conversion peut entraîner une perte de données, le langage C exige que vous le fassiez explicitement — cela indique au compilateur que vous êtes conscient de la perte de données potentielle.
Défi
FacileÉcrivez un programme qui :
- Déclare une variable double
resultet lui affecte la valeur 5.65 - Déclare une variable int
grade - Assigne la valeur de
resultàgradeen utilisant un transtypage explicite - Affiche la valeur de
gradeavec le message "The grade is: " en utilisant printf
Aide-mémoire
Transtypage implicite — conversion automatique d'un type plus petit vers un type plus grand :
int num = 10;
double decimal_num = num; // devient 10.0Chemin de transtypage implicite courant : char → int → long → float → double
Transtypage explicite — conversion manuelle en utilisant (target_type) value :
double decimal_num = 5.65;
int num = (int)decimal_num; // devient 5 (tronqué, pas arrondi)Utilisez le transtypage explicite lors de la conversion d'un type plus grand vers un type plus petit, où une perte de données peut se produire.
Essayez vous-même
#include <stdio.h>
int main() {
double result = 5.65;
int grade;
// Utiliser le transtypage explicite pour convertir result (double) en grade (int)
printf("The grade is: %d\n", grade);
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 Fundamentals
2Variables
Types de donnéesEntiersFloat - DoubleCaractèresBooléensConstantesLes bases de printfRègles de nommage des variablesType Casting Partie 1Type Casting Partie 2Défi récapitulatif3Opérateurs
Opérateurs arithmétiquesOpérateur moduloIncrémentation/DécrémentationOpérateurs d'affectationOpérateurs relationnelsOpérateurs logiques - Partie 1Opérateurs logiques - Partie 2Opérateurs logiques - Partie 3Défi récapitulatif