4.4.2 Les conversions explicites : l'opérateur de cast
La conversion implicite effectuée par le compilateur, ou le type utilisé pour un calcul, ne conviennent pas toujours au programmeur : celui‐ci peut forcer la conversion d'une expression quelconque dans le type de son choix grâce à l'opérateur unaire de conversion appelé cast. C’est par exemple très utile pour obliger un calcul à se faire en réel bien que ses opérandes soient des entiers (piège de la division entière…).
Sa syntaxe d’un cast est la suivante : (type) expression
Exemple 10, Conversions explicites par « cast » (télécharger le c des 4 écritures) Le cast s’applique à la valeur 1000 qui est converti en long → cela permet au reste du calcul de se faire en long et ainsi d’éviter un dépassement lors de la multiplication. Le résultat de la division finale sera converti si nécessaire lors de l’affectation dans le type de la Leftvalue entier.
Terminons avec les pièges de la division entière.
Exemple 11, Division entière et conversion explicite par « cast » (télécharger le c des 2 écritures) Soient n et p deux variables entières valant 10 et 3. On cherche à effectuer leur division réelle et à stocker le résultat dans une variable réelle res_reelle. Solution 1 (fausse) :
Solution 2 (juste) :
Un cast (short int) ou (long int) effectué sur un réel revient à prendre la partie entière de la valeur absolue, puis à « remettre le signe » (sous réserve que la valeur initiale reste dans les limites du nouveau type). C’est parfois bien utile.
Un cast (char) sur un entier revient à prendre sa valeur modulo 256. |