Coerção

Pq neste expressão , fui obrigado a inserir o (float) no incio da expressão (ou optar p/ transformar a variável de float p/ double ?)

salarioBruto = (float) ((horasTrab - 40) * (1.09 * salarioHora));

sendo que declarei as variveis como:
float salarioHora, horasTrab, salarioBruto;

A conversão não deveria ser automática ? Minhas variáveis são todas do tipo float !!

Nos exemplos abaixo,

float = float operador float
float = float operador integer

o último eu teria que fazer float = (float) float operador integer, certo ?
Mas não entendi, pq no caso da expressão do salárioBruto, fui obrigado a inserir o (float)

essas variaveis forao inicializadas??

tente fazer

salarioBruto =(horasTrab - 40f) * (1.09f * salarioHora); 

por default um número não inteiro (com casas apos a virgula) é tratado como double, se você quer tratar como float precisa colocar o “f” ou “F” no final do numero para indicar ao compilador que este número é float. Caso contrario ele trata como double e um double não cabe em um float, por isso ele força que a conversão seja manual;

não sei se fui claro… qualquer coisa postae…
abraço…