Solution de l’exercice 2.1

Cela dépend du compilateur, mais il est peu probable que x vale 100 000 000 comme on devrait l’attendre. En Turbo C++, par exemple, sur PC, x vaut 4 294 959 360, soit encore 232 - 7 936. En effet, le produit u*v est trop grand pour tenir dans un entier à deux octets ; il est donc tronqué, ce qui donne -7 936, d’où le résultat final. Une telle écriture est donc erronée et doit être proscrite. On peut l’améliorer par un changement de type (voir plus loin dans ce chapitre), mais il est bien plus sûr d’écrire :

unsigned long x = u;x *= v;

Retour au texte.