2012-05-05 14 views
23

Sto sviluppando un'applicazione in Android utilizzando Eclipse. Ho scritto il seguente codice e nei test il primo e il terzo blocco "se" non sono raggiungibili. Perché?perché non è (123 == 0123) in java?

Quando aggiungo uno zero iniziale a un numero, l'operatore uguale restituisce falso.

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

risposta

55

0123 è un numero ottale (leading 0), mentre 123 è un numero decimale.

modouguale effettivamente 83.

+0

Come si possono impostare come numero decimale? – breceivemail

+27

rimuovere lo 0 iniziale – MByD

21

Qualsiasi intero numero iniziale con zero è il numero ottale (base 8).

0123 è Numero ottale e 123 è decimale Numero

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

perchéin non cifra decimale sua ottale (base 8) quindi questo è uguale a 83

Per convertire un numero k al decimale, utilizzare la formula che definisce la sua rappresentazione in 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 numero ottale costituito da una cifra ASCII 0 seguita da una o più cifre ASCII 0 a 7 e può rappresentare un positivo, zero o un numero intero negativo.

Nota: valori ottali sono indicati in java conducendo numero decimale normale zero non può avere uno zero

Problemi correlati