2013-07-19 11 views
5
long l2 = 32; 

Quando uso la dichiarazione di cui sopra, non ottengo un errore (non ho usato l alla fine), ma quando uso la dichiarazione seguente, ho questa errore:Utilizzando la lettera L in lunga dichiarazione di variabili

The literal 3244444444 of type int is out of range

long l2 = 3244444444; 

Se uso long l2 = 3244444444l;, allora non c'è nessun errore.

Qual è il motivo? L'utilizzo di l non è obbligatorio per le variabili lunghe.

risposta

6

3244444444 viene interpretato come un valore intero letterale ma non può rientrare in una variabile int a 32 bit. Ha bisogno di essere un letterale valore di lungo, quindi ha bisogno di un l o L alla fine:

long l2 = 3244444444l; // or 3244444444L 

Maggiori informazioni:

+1

Ma mi dichiarate come long.How è interpretato come numero intero – PSR

+0

@PSR la variabile è intero, il valore letterale viene interpretato come 'int' e quando viene assegnato alla variabile' long' diventerà un ' valore lungo Fare riferimento al link nella mia risposta per ulteriori informazioni. –

+0

Grazie per l'aiuto – PSR

0

Nota che mentre letterali int saranno automaticamente allargato a lungo quando si assegna a una lunga variabile, sarà necessario utilizzare un esplicito lungo letterale quando esprime un valore che è

  1. maggiore di Integer.MAX_VALUE (2147483647)

    (o)

  2. meno di Integer.MIN_VALUE (-2147483648):

    long x1 = 12; //OK 
    long x2 = 2147483648; // not OK! That's not a valid int literal 
    long x3 = 2147483648L; // OK 
    
Problemi correlati