Conversions vers un type entier
- 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é.
- 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.
- 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