steaxlex Posted May 12, 2020 at 02:27 PM Report Share #618100 Posted May 12, 2020 at 02:27 PM Boa tarde. Sou iniciante na programação (só sei linguagens) e em um dos exercicios que estava a fazer surgiu uma dúvida por causa de algo que já li. O exercicio é o seguinte: Citação bool a; int b; double c; a = true; b = 2; c = -3.5; a = b - a; c = c + b + a; b = (int) c; O resultado que me deu é 0.5 (no papel), mas como é pedido um número inteiro, 0.5 é igual a 0 ou a 1? Pergunto porgue se é um número inteiro terá de ser "arredondado", certo? 0.5 é arredondado para cima ou para baixo? Penso que será igual a 0, mas não tenho a certeza, apesar de fazer o "cout" no codeblocks e dar 0, sem qualquer erro. Pergunta básica, mas que para mim é de ajuda. Obrigado desde já. Link to comment Share on other sites More sharing options...
Solution antseq Posted May 12, 2020 at 07:53 PM Solution Report Share #618107 Posted May 12, 2020 at 07:53 PM 5 horas atrás, steaxlex disse: O resultado que me deu é 0.5 (no papel), mas como é pedido um número inteiro, 0.5 é igual a 0 ou a 1? Pergunto porgue se é um número inteiro terá de ser "arredondado", certo? 0.5 é arredondado para cima ou para baixo? Penso que será igual a 0, mas não tenho a certeza, apesar de fazer o "cout" no codeblocks e dar 0, sem qualquer erro. Pergunta básica, mas que para mim é de ajuda. o valor de c = -0.5 .... e o "cast" para (int) transforma em 0 que é o resultado final. do que entendo, o "cast" para (int) dará sempre a parte inteira, sem qualquer aproximação (floor ou ceil) ou arredondamento (round): int main() { cout<<"(int) -0.9 = "<< (int) (-0.9f) << "\n"; cout<<"(int) -0.5 = "<< (int) (-0.5f) << "\n"; cout<<"(int) -0.3 = "<< (int) (-0.3f) << "\n"; cout<<"(int) +0.3 = "<< (int) (0.3f) << "\n"; cout<<"(int) +0.5 = "<< (int) (0.5f) << "\n"; cout<<"(int) +0.9 = "<< (int) (0.9f) << "\n"; cout<<"\n"; cout<<"(int) -1.9 = "<< (int) (-1.9f) << "\n"; cout<<"(int) -1.5 = "<< (int) (-1.5f) << "\n"; cout<<"(int) -1.3 = "<< (int) (-1.3f) << "\n"; cout<<"(int) +1.3 = "<< (int) (1.3f) << "\n"; cout<<"(int) +1.5 = "<< (int) (1.5f) << "\n"; cout<<"(int) +1.9 = "<< (int) (1.9f) << "\n"; return 0; } output: (int) -0.9 = 0 (int) -0.5 = 0 (int) -0.3 = 0 (int) +0.3 = 0 (int) +0.5 = 0 (int) +0.9 = 0 (int) -1.9 = -1 (int) -1.5 = -1 (int) -1.3 = -1 (int) +1.3 = 1 (int) +1.5 = 1 (int) +1.9 = 1 1 Report Link to comment Share on other sites More sharing options...
steaxlex Posted May 12, 2020 at 08:23 PM Author Report Share #618108 Posted May 12, 2020 at 08:23 PM 27 minutos atrás, antseq disse: o "cast" para (int) dará sempre a parte inteira, sem qualquer aproximação (floor ou ceil) ou arredondamento (round): Sim, não interpretei o (int) devidamente. Muito obrigado pelo esclarecimento. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now