pourquoi n'est-ce pas (123 == 0123) en java?
Je développe une application dans Android en utilisant Eclipse. J'ai écrit le code suivant et dans les tests le premier et le troisième bloc "if" n'est pas accessible. Pourquoi?
Lorsque j'ajoute un zéro à un nombre, l'opérateur égal renvoie false.
int var = 123;
if (var == 0123) {
//not reachable
}
if (var == 123) {
//reachable
}
if (var == (int)0123) {
//not reachable
}
if (var == (int)123) {
//reachable
}
3 réponses
Tout nombre entier menant à Zéro est un nombre octal (base 8).
0123
est Nombre octal et 123
est un Nombre Décimal
0123 = (3*8^0) +(2*8^1)+(1*8^2)+(0*8^4)
=3+16+64+0
=83
Parce que 0123 en chiffre non décimal son octal (base 8) donc c'est égal à 83
Pour convertir un nombre k en décimal, utilisez la formule qui définit sa représentation de base-8:
0123 base-8 = 83 decimal
0123 = (3*8^0) +(2*8^1)+(1*8^2)+(0*8^4)
=3+16+64+0
=83
Un nombre octal se compose d'un chiffre ascii 0 suivi d'un ou plusieurs des chiffres ASCII 0 à 7 et peut représenter un entier positif, zéro ou négatif.
Note: les valeurs octales sont notées en java par un nombre décimal normal zéro ne peut pas avoir un zéro en tête