1
resposta

Casting explícito

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?

1 resposta

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!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.