« Programmation C/Erreurs » : différence entre les versions

Contenu supprimé Contenu ajouté
Tpierron (discussion | contributions)
Tpierron (discussion | contributions)
m 18446744073709551616 se code sur 65bits
Ligne 51 :
teste("256");
 
/* 2^64 puissance- 641 : peut echouer suivant la machine */
teste("1844674407370955161618446744073709551615");
return 0;
}</pre>
Si le type <code>unsigned long</code> est codé sur 32 bits, on peut obtenir:
La conversion a été effectéee, et la valeur est: 256
Impossible de convertir le nombre '1844674407370955161618446744073709551615': la valeur est en dehors de l'intervalle du type spécifié.
 
Il est nécessaire de placer <code>errno</code> à 0 ''avant'' d'utiliser <code>strtoul</code>, car les fonctions de la bibliothèque standard ne sont pas obligées de la mettre à zéro en cas de succès. Si on ne la réinitialisait pas «&nbsp;manuellement&nbsp;», on pourrait voir le résultat d'une erreur causée par un appel de fonction antérieur. C'est une des lourdeurs du modèle de gestion d'erreur du C, bien qu'une telle paranoïa n'est pas toujours nécessaire.