class VetorSimples
{
public static void main(String...daudhai){
long x = 2147483648;
System.out.printf("x: %d\n", x);
}
}
o número 2147483648 é visto como um Integer e não como um Long… tente fazer isso (não sei se vai dar certo pq to sem IDE aqui)
class VetorSimples
{
public static void main(String...daudhai){
long x = 2147483648L; //Coloque um L do lado do numero
System.out.printf("x: %d\n", x);
}
}
De fato, colocando um L após o número funcionou. Mas, veja esse código:
[code]class VetorSimples
{
public static void main(String…daudhai){
long x = 214748364846468456L;
double f = 468f;
System.out.printf("x: %d\nf: %f\n", x, f);
}
}[/code]
Observe que, do tipo float para double, ele converte automaticamente, pois não haverá perda de precisão. Agora, porque não acontece o mesmo com o long? Ou seja, porque int para long ele não faz automaticamente? :shock:
Acontece que aquele “10”, escrito de maneira literal, é um int. E você não pode escrever ints tão grandes. Por isso, o “L” para dizer que o literal é um long.
Acontece que aquele “10”, escrito de maneira literal, é um int. E você não pode escrever ints tão grandes. Por isso, o “L” para dizer que o literal é um long.[/quote]
Humm, ok. Essa do literal sempre ser um int matou a charada. Obrigado! :thumbup: