2012-05-05 10 views
23

Estoy desarrollando una aplicación en Android usando Eclipse. Escribí el siguiente código y en las pruebas el primer y tercer bloque "if" no es accesible. ¿Por qué?¿por qué no está (123 == 0123) en java?

Cuando agrego un cero inicial a un número, el operador igual devuelve falso.

int var = 123; 
if (var == 0123) { 
    //not reachable 
} 
if (var == 123) { 
    //reachable 
} 
if (var == (int)0123) { 
    //not reachable 
} 
if (var == (int)123) { 
    //reachable 
} 

Respuesta

55

0123 es un número octal (leading 0), mientras que 123 es un número decimal.

tanes igual en realidad a 83.

+0

cómo puedo configurarlo como número decimal? – breceivemail

+27

eliminar el líder 0 – MByD

21

cualquier número entero líder con cero es el número octal (base 8).

0123 es el número octal y 123 es decimal Número

= (3*8^0) +(2*8^1)+(1*8^2)+(0*8^4) 
     =3+16+64+0 
     =83 
9

porqueen no dígito decimal su octal (base 8) por lo que este es igual a 83

Para convertir un número k a decimal, use la fórmula que define su representación de base 8:

enter image description here

base-8 = 83 decimal 

= (3*8^0) +(2*8^1)+(1*8^2)+(0*8^4) 
    =3+16+64+0 
    =83 

Un numeral octal consta de un dígito ASCII 0 seguido de uno o más de los ASCII dígitos de 0 a 7 y puede representar un positivo, cero, o un entero negativo.

Nota: valores octales se denotan en Java por los principales número decimal cero normal no puede tener un cero

Cuestiones relacionadas