Dúvida sobre if-else em C

23/04/2022

6

C

Fiz o seguinte código em C:

#include <stdio.h>

int main()
{
int mes;

printf("Digite o número referente ao mês: ");
scanf("%i", &mes);

if(mes==4||mes==6||mes==9||mes==11)
printf("O mês tem 30 dias");
if(mes==1||mes==3||mes==5||mes==7||mes==8||mes==10||mes==12)
printf("O mês tem 31 dias");
else
printf("O mês tem 28 dias");


return 0;
}


Neste exemplo, meu código estava apresentando 2 resultados quando eu colocava valores referentes ao meses que têm 30 dias(que estão no 1º if). Isso já não acontece com o 2º if e o else.

Gostaria de saber o porquê disso e, se possível, uma resolução para o problema. Sou iniciante e acabo quebrando cabeça com if e else.
Matheus

Matheus

Responder

Post mais votado

25/04/2022

Pessoal, acabei solucionando o problema. Basicamente, utilizei apenas 1 if e 1 else. Dentro deste else, coloquei if e else novamente. Mas, mantenho a minha dúvida, por que dessa forma funcionou e da outra não?

Ficou assim:

int main()
{
int mes;

printf("Digite o número referente ao mês: ");
scanf("%i", &mes);

if(mes==4||mes==6||mes==9||mes==11)
printf("O mês tem 30 dias");
else{
if(mes==1||mes==3||mes==5||mes==7||mes==8||mes==10||mes==12)
printf("O mês tem 31 dias");
else
printf("O mês tem 28 dias");}


return 0;
}


Olá Matheus,
Da forma anterior não funcionava pois o primeiro if não tinha um else e aí ele tratava como duas instruções separadas. Agora quando o if tem um else ele trata como uma mesma instrução.
Por exemplo, vc poderia ter usado tambem o else if direto ali no segundo if que daria certo.

Nathália Hirth

Nathália Hirth
Responder

Mais Posts

23/04/2022

Matheus

Pessoal, acabei solucionando o problema. Basicamente, utilizei apenas 1 if e 1 else. Dentro deste else, coloquei if e else novamente. Mas, mantenho a minha dúvida, por que dessa forma funcionou e da outra não?

Ficou assim:

int main()
{
int mes;

printf("Digite o número referente ao mês: ");
scanf("%i", &mes);

if(mes==4||mes==6||mes==9||mes==11)
printf("O mês tem 30 dias");
else{
if(mes==1||mes==3||mes==5||mes==7||mes==8||mes==10||mes==12)
printf("O mês tem 31 dias");
else
printf("O mês tem 28 dias");}


return 0;
}
Responder

01/05/2022

Matheus

Compreendi, obrigado. Só não entendo uma coisa, mesmo como instruções diferentes, eles não deveriam imprimir apenas em caso de uma verificação correta?
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários,
consulte nossa política de privacidade.

Aceitar