• Matéria: Informática
  • Autor: VS92
  • Perguntado 4 anos atrás

Pessoal que entende de linguagem C, gostaria de saber pq quando boto uma idade superior a 18 e a idade igual a 1.65 ela não reconhece no programa:

#include
int main(){
int idade;
float altura;

printf("Informe sua idade: ");
scanf("%d", &idade);

printf("Informe sua altura: ");
scanf("%f", &altura);

if((idade>=18)&&(altura>=1.65)) {
printf("Parabéns! - bem-vindo ao exército!\n\n");
}
else
printf("Tente novamente no futuro!\n\n");

}

Quem poder me falar oq estou fazendo errado ia me ajudar muito...

Respostas

respondido por: PedroviskHMA
1

Boa noite! Então, o seu problema é com o valor literal "1.65". Quando o compilador lê esse literal, ele o transforma imediatamente para double, alterando o tipo e quebrando a comparação. Isso acontece porque o double e o float são representados de maneira diferente na memória. Para resolver esse problema, basta mudar o tipo do literal "1.65" para float, fazendo:

if((idade>=18)&&(altura>= (float) 1.65)) {

Ou

if((idade>=18)&&(altura>=1.65f)) {

Aliás, aconselho a ler sobre esse assunto de como números de ponto flutuante são representados na memória. É um assunto interessante e vai te abrir bastante os horizontes de como a memória no C, funciona.


lucas27484: poderia me ajudar em python? coloquei a pergunta bem organizada
lucas27484: Dan está aprendendo sobre os 3 R's no seu colégio, Reduzir Reutilizar e Reciclar! Ele não conhecia muito sobre ecologia ...
https://brainly.com.br/tarefa/40616885?utm_source=android&utm_medium=share&utm_campaign=question
lucas27484: poderia me ajudar?
lucas27484: questão de python.

Um padrão comum de codificação de caracteres é ASCII - confira a tabela ascii aqui. Esse código atri...
https://brainly.com.br/tarefa/41434633?utm_source=android&utm_medium=share&utm_campaign=question
Perguntas similares