Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Onde é que o compilador entende que se tornou um double

tenho a seguinte duvida. Em que momento o compilador define o tipo do atributo.

Se double i2 = 3/2; (R: 1.0 ){Logo o compilador entende como int e remove o valor .5} double i3 = 3/2.0; (R: 1.5){Logo o compilador entende como double e atribui o valor de .5}

Mas em que momento ele sabe quando deve trabalhar com int ou com double se o valor que irá retornar será sempre um double ?

2 respostas

Oi Cleiton,

É o comportamento default do compilador. Número sem casa décimal é inferido como int, com casa decimal é inferido como double. Quando você divide 3/2 está em uma operação que só envolve int, o resultado é int. Quando vc divide 3/2.0 está em uma operação que envolve double, então o resultado é double.

solução!

Então eu poderia realizar o calculo 3/2.0f para que o compilador me devolvesse um float ? Ex:

float resultado = 3/2.0f;