Dúvida sobre ponto e vírgula em C

01/05/2022

0

C

Por que, neste código por exemplo, ao colocar ponto e vírgula após os "if" todos acabam sendo utilizados?


#include <stdio.h>

int main()
{
int x, y;

printf("Digite o valor de x e y(na ordem): ");
scanf("%i%i",&x,&y);

if(x!=0 && y!=0)
{if(x>0 && y>0) // dúvida: pq se colocar ponto e vírgula após os "if", o código não funciona? (imprime tudo)
printf("Primeiro quadrante");
if(x<0 && y>0)
printf("Segundo quadrante");
if(x<0 && y<0)
printf("Terceiro quadrante");
if(x>0 && y<0)
printf("Quarto quadrante");

}

else
{if(x==0 && y==0)
printf("Origem");
else
printf("Sobre o eixo");}

return 0;
}
Matheus

Matheus

Responder

Post mais votado

10/07/2022

Aconselho que use o parâmetro else if em vez de todos os 'if's alinhados;

else if
Complementar ao if/else temos o operador else if que traz uma nova condição a ser testada no caso de falha no teste da condição anterior.

Sintaxe do else if:

if (expressão booleana 1)
{
// código 1
}
else if (expressão booleana 2)
{
// código 2
}
else
{
// código 3
}
Dessa forma, é testada a expressão booleana 1. Caso ela seja atendida, o bloco de código 1 é executado. Caso não seja, testamos a expressão 2. Sendo atendida, o bloco de código 2 é executado. Não sendo atendida, o programa executa o bloco de código 3.

Saiba que podemos criar vários else if, o que nos possibilita atender a cenários com três ou mais condições a serem avaliadas.

Segue o link do tópico: https://www.devmedia.com.br/csharp-if-else-e-o-operador-ternario/38192#:~:text=l%C3%B3gica%20sendo%20implementada.-,else%20if,no%20teste%20da%20condi%C3%A7%C3%A3o%20anterior.&text=Dessa%20forma%2C%20%C3%A9%20testada%20a,de%20c%C3%B3digo%201%20%C3%A9%20executado.

Rafael

Rafael
Responder

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

Aceitar