Conversions vers un type entier

$\bullet$
depuis un type entier La règle est de préserver, si c'est possible, la valeur mathématique de l'objet. Si ce n'est pas possible :
-
si le type destination est un type signé, on considère qu'il y a dépassement de capacité et la valeur du résultat n'est pas définie.
-
si le type destination est un type non signé, la valeur du résultat doit être égale (modulo n) à la valeur originale, où n est le nombre de bits utilisés pour représenter les valeur du type destination.
Dans ce qui suit, on se place précisément dans la cas où la machine représente les nombres signés en complément à 2 (c'est le cas de pratiquement toutes les machines). Une conversion d'un entier signé vers un entier non signé, ou vice versa, se fait sans changement de représentation. Une conversion d'un entier vers un entier plus court se fait par troncature des bits les plus significatifs. Une conversion d'un entier vers un entier plus long se fait par extension du bit de signe si le type originel est signé, par extension de zéros si le type originel est non signé.

$\bullet$
depuis un type flottant La règle est de préserver, si c'est possible, la valeur mathématique de l'objet, sachant qu'il peut y avoir une erreur d'arrondi.

$\bullet$
depuis un pointeur Un pointeur peut être converti en un type entier. Pour cela il est considéré comme un type entier non signé de la même taille que les pointeurs. Il est ensuite converti dans le type destination selon les règles de conversions d'entiers vers entiers.

Matthieu Moy 2017-02-08