Leçon 13 : Conversion de types (Casting) et Règles de conversion
Mélanger différents types de données dans une expression peut entraîner une conversion de type soit implicite, soit explicite (casting).
Conversion implicite (Coercition)
Effectuée automatiquement par le compilateur pour éviter la perte de données ou de précision. Cela se produit lors de la promotion d'un type de rang inférieur vers un type de rang supérieur (ex: int vers float).
Hiérarchie de promotion (simplifiée) : char < int < long < float < double
c int a = 10; double b = 3.5; double resultat = a + b; // 'a' (10) est implicitement promu en double (10.0)
Conversion explicite (Type Casting)
Lorsque vous devez forcer une conversion, particulièrement pour convertir un type de rang supérieur vers un type de rang inférieur (ce qui peut impliquer une perte de données).
Syntaxe : (type_cible) expression
Exemple : Corriger une division entière
c int num1 = 10; int num2 = 3;
// Problème : La division entière donne 3 float moy1 = num1 / num2; // moy1 vaut 3.0
// Solution : Convertir explicitement un opérande en float float moy2 = (float)num1 / num2; // moy2 vaut 3.333...
Conversion de pointeurs (Aperçu)
Le casting est également essentiel lors de l'utilisation de fonctions d'allocation de mémoire comme malloc, bien que les standards modernes du C rendent cela souvent optionnel.