Dans le domaine de la programmation, les nombres préfixés par zéro peuvent présenter un comportement intrigant. Examinons les détails à l'aide d'exemples de Visual Studio 2013.
Considérez l'extrait de code suivant :
int i = 07; // i == 7 int i = 16; // i == 16 int i = 00016; // i == 14, why? int i = 05016; // i == 2574, wow ) int i = 08; // compile error, compiler expects octal number...
Traitement spécial des nombres avec préfixe zéro
Le compilateur interprète les nombres avec préfixe zéro différemment selon le contexte :
Comportement inhabituel avec 00016 et 05016
L'affectation int i = 00016; se résout en i == 14 car le compilateur traite les zéros non significatifs comme des chiffres octaux supplémentaires, même si cela n'est pas valide selon la norme C.
De même, int i = 05016; donne i == 2574 car le compilateur l'interprète comme suit :
Erreur de compilation avec 08
Un littéral entier commençant par 0 suivi d'un chiffre autre que 0-7, tel que 08, déclenche une compilation erreur car le compilateur s'attend à ce qu'il s'agisse d'un nombre octal, mais 8 n'est pas un chiffre octal valide.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!