Programmation C : Maîtriser le transtypage et la conversion de types
Convertir un type de données en un autre est appelé transtypage (type casting) ou conversion de type. Par exemple, si vous voulez stocker une valeur long dans un simple entier, vous pouvez transtyper long en int. Vous pouvez convertir explicitement les valeurs d'un type à un autre en utilisant l'opérateur de transtypage comme suit :
(nom_type) expression
Considérez l'exemple suivant où l'opérateur de transtypage fait en sorte que la division d'une variable entière par une autre soit effectuée comme une opération à virgule flottante :
Démonstration en direct#include <stdio.h>
main() {
int somme = 17, compteur = 5;
double moyenne;
moyenne = (double) somme / compteur;
printf("Valeur de moyenne : %f\n", moyenne);
}
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant :
Valeur de moyenne : 3.400000
Il faut noter que l'opérateur de transtypage a priorité sur la division, donc la valeur de somme est d'abord convertie en type double puis divisée par compteur, produisant une valeur double.
Les conversions de type peuvent être implicites (effectuées automatiquement par le compilateur) ou explicites via l'opérateur de transtypage. Il est considéré comme une bonne pratique de programmation d'utiliser l'opérateur de transtypage chaque fois que des conversions de type sont nécessaires.
Promotion d'entiers
La promotion d'entiers est le processus par lequel les valeurs de type entier "plus petites" que int ou unsigned int sont converties soit en int soit en unsigned int. Prenons l'exemple d'une addition d'un caractère avec un entier :
Démonstration en direct#include <stdio.h>
main() {
int i = 17;
char c = 'c'; /* valeur ASCII 99 */
int somme;
somme = i + c;
printf("Valeur de somme : %d\n", somme);
}
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant :
Valeur de somme : 116
Ici, la valeur de somme est 116 car le compilateur effectue la promotion d'entier et convertit la valeur de 'c' en son code ASCII (99) avant d'effectuer l'addition.
Conversion arithmétique usuelle
Les conversions arithmétiques usuelles sont effectuées implicitement pour convertir les valeurs en un type commun. Le compilateur effectue d'abord la promotion d'entier ; si les opérandes ont encore des types différents, ils sont convertis vers le type qui apparaît le plus haut dans la hiérarchie suivante :
Les conversions arithmétiques usuelles ne sont pas effectuées pour les opérateurs d'affectation, ni pour les opérateurs logiques && et ||. Prenons l'exemple suivant :
#include <stdio.h>
main() {
int i = 17;
char c = 'c'; /* valeur ASCII 99 */
float somme;
somme = i + c;
printf("Valeur de somme : %f\n", somme);
}
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant :
Valeur de somme : 116.000000
Ici, c est d'abord converti en entier, mais comme le résultat final est un float, la conversion arithmétique usuelle s'applique et le compilateur convertit i et c en float avant de les additionner, produisant un résultat float.
Langue C
- Maîtriser la conversion de types en C# : Implicite, Explicite, Parse et méthodes Convert
- Maîtriser la conversion et le transtypage de types en Python : Guide complet
- Maîtriser le transtypage Java : De l'élargissement au rétrécissement et au-delà
- Types de variables en C++ : Mémoire, limites et opérations
- Guide complet des types de données C# : Valeur, Référence et Pointeur
- Comprendre la conversion de types en C# : conversion implicite et explicite expliquée
- Comprendre les types nullables en C# : gérer les valeurs nulles en toute sécurité
- Maîtriser les attributs en C# : enrichir le code avec des métadonnées
- Moulage sous Pression (Die Casting) Expliqué : Précision, Efficacité et Avantages de Production