Les zéros non significatifs confondent l'interprétation des entiers
Lorsqu'il s'agit de littéraux entiers, la présence de zéros non significatifs peut avoir des conséquences inattendues. Considérez le code suivant :
System.out.println(0123); // prints 83 System.out.println(123); // prints 123
Pourquoi la première ligne imprime-t-elle 83 au lieu de 123 ? La clé réside dans le zéro non significatif.
Interprétation octale
Un zéro non significatif dans un littéral entier indique que le nombre est exprimé en octal (base 8). Pour convertir un nombre octal en décimal, multipliez chaque chiffre de droite à gauche par la puissance appropriée de 8 et additionnez les résultats.
Dans le cas de 0123, nous avons :
(1 * 8 * 8) + (2 * 8) + (3) = 83
Par conséquent, 0123 est interprété comme la valeur décimale 83.
Pourquoi pas d'octal Flotteurs ?
Curieusement, Java n'autorise pas les littéraux octaux à virgule flottante, donc ce comportement ne s'applique qu'aux nombres entiers.
Meilleures pratiques
Pour éviter toute confusion, il est généralement recommandé d'éviter d'utiliser des zéros non significatifs dans les littéraux entiers, sauf si vous souhaitez spécifiquement que le nombre soit interprété comme octal.
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!