Dans le jargon C, l'opérateur de conversion de type s'appelle un cast.
Dans le vocabulaire des langages de programmation en général, une conversion
de type s'appelle en anglais une coertion, que l'on peut traduire par
contrainte ou coercition. Le mot anglais cast signifie plâtre (pour
maintenir un membre brisé), il donne donc bien une idée de contrainte,
mais c'est quand même un choix bizarre.
à cause de l'absence de prototype de fonction qui rendait
impossible la déclaration du type des paramètres des
fonctions externes.
Si une procédure p attendait un paramètre de type float, et si on
désirait lui passer la valeur possédée par la variable i de type
int, il ne fallait pas écrire p(i) mais p((float) i).
Il reste cependant un certain nombre de situations où l'opérateur de conversion
est nécessaire.
En voici un exemple.
Il s'agit d'un
programme qui a pour but de déterminer si l'architecture de la machine
est de type little endian ou big endian.
Il faut regarder l'ordre des octets dans un entier,
d'où la nécessité de l'opérateur de conversion.
Ce programme suppose que les int sont implémentés sur 4 octets.
int i = 0x01020304;
char *p;
p = (char *) &i; /* int * transformé en char * */
if (*p++ == 1 && *p++ == 2 && *p++ == 3 && *p++ == 4 )
printf("big endian\n");
p = (char *) &i;
if (*p++ == 4 && *p++ == 3 && *p++ == 2 && *p++ == 1 )
printf("little endian\n");
Exécuté sur une machine Sun à processeur SPARC, ce programme répondra
big endian, exécuté sur un PC à processeur Intel, il répondra
little endian.