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

Estou com dúvida no curso de C# e seus Fundamentos, no exercício do capítulo Variáveis e Tipos Primitivos.

            int idadeJoao = 10;
            int idadeMaria = 25;
            int idadeJose = 30;
            double idadeMedia = (idadeJoao+idadeMaria+idadeJose)/3;
            MessageBox.Show("A soma das idades é: " + idadeMedia);

Dúvida: Porque a idade é mostra 21, já que tem parte decimal?

2 respostas
solução!

Porque idadeJoao é int, idadeMaria e idadeJose também. Portanto, somando os dois, o resultado é um int. Ao dividir usando /, o compilador decide o tipo de divisão baseado no tipo dos dados envolvidos. Como o dividendo é int (a soma das idade) e o divisor também (a constante 3), a divisão feita é inteira e o resto é desprezado. Somente depois de fazer a divisão inteira é que ocorre a atribuição para a variável idadeMedia, que é double e aceita casas decimais. Para ver como esse comportamento ocorre, experimente trocar a linha que faz a divisão por: double idadeMedia = (idadeJoao + idadeMaria + idadeJose) / 3.0; Nesse caso, como o divisor será uma constante do tipo double (3.0), ocorrerá uma conversão implícita do dividendo para double e a divisão terá a parte decimal, como você espera. Experimente!

ok, valeu! Dúvida resolvida.