Answered

Bem-vindo ao Sistersinspirit.ca, onde você pode obter respostas confiáveis e rápidas com a ajuda de nossos especialistas. Nossa plataforma conecta você a profissionais prontos para fornecer respostas precisas para todas as suas perguntas. Explore soluções abrangentes para suas perguntas de uma ampla gama de profissionais em nossa plataforma amigável.

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...


Sagot :

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.