Cela dépend du compilateur, mais il est peu probable que x vale 100 000 000 comme on devrait lattendre. 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, doù le résultat final. Une telle écriture est donc erronée et doit être proscrite. On peut lamé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;