J'ai eu cette expérience bizarre avec le problème numéro 10 sur Projet Euler (excellent site, d'ailleurs). La mission consistait à calculer la somme de tous les nombres premiers inférieurs à deux millions.
J'ai utilisé un int pour la somme, et mon algorithme a produit une réponse, mais lorsque je l'ai collé pour vérifier la réponse, elle était fausse.
Il s'est avéré que le résultat était trop grand pour tenir dans un int, mais cela ne provoquerait-il pas une erreur de dépassement de capacité ou autre ? Au lieu de cela, il a juste renvoyé une valeur très éloignée de la vraie réponse.
Quand j'ai changé le type en long, tout était parfait.
5 votes
Voulez-vous vraiment que chaque opération sur les nombres entiers vérifie le débordement ?
6 votes
Eh bien, cela m'aurait certainement fait gagner du temps dans ce cas précis ;)
1 votes
Dans ce cas, oui. Mais la grande majorité des opérations ne peuvent pas déborder. Il serait intéressant que le compilateur puisse le prouver et désactiver la vérification en conséquence, mais je doute fort qu'il le fasse.