double x = 3.000.000.000; int y = (int) x; // Neste casting explícito, o valor x é maior que um inteiro (limite 2.147.483.647). Então ocorreria um ERRO?
double x = 3.000.000.000; int y = (int) x; // Neste casting explícito, o valor x é maior que um inteiro (limite 2.147.483.647). Então ocorreria um ERRO?
Olá Paulo, tudo certo?
Quando você realiza um casting explícito de um double
para um int
, como no seu exemplo, não ocorrerá um erro de compilação, mas sim uma perda de dados. Isso acontece porque o valor do double
pode ser maior do que o valor máximo que um int
pode armazenar (2.147.483.647). Nesse caso, o valor será truncado para caber no tipo int
, resultando em uma perda de precisão e, possivelmente, em um valor inesperado.
No seu exemplo:
double x = 3.000.000.000;
int y = (int) x;
O valor de x
é maior do que o valor máximo que um int
pode armazenar, então y
não será 3.000.000.000, mas sim um valor diferente devido ao truncamento. O resultado será um número negativo, pois o valor excede o limite superior do tipo int
.
Espero ter ajudado e bons estudos!