Ir ao conteúdo
  • Cadastre-se

C Porque não usar ; no final do comando IF


DarkLaw

Posts recomendados

Pessoal quando eu uso o IF no no devc++ não preciso colocar ; no final porquê? Sei que tenho que colocar entre chaves o que o IF vai levar  em consideração, mas meu professor me mostrou alguns códigos onde não é preciso colocar entre chaves depois do IF alguém sabe o porquê também?

Link para o comentário
Compartilhar em outros sites

38 minutos atrás, vangodp disse:

suponho que você diz algo como isso:
if(...); <-isso?
{
//...
}

porque si colocar esse ponto e virgula você ta separando a condição if(...) da instrução {...}, é como se fosse 2 coisas separadas, então esse seu if não faz sentido algum, porque não faz efeito.

Ahh Entendi, obrigado mano...

Link para o comentário
Compartilhar em outros sites

Sobre a questão do uso das chaves: as chaves devem ser usadas quando a quantidade de comandos da estrutura(condicional ou de repetição) for maior que 1. Ou seja, as chaves são utilizadas para demarcar um bloco de comandos a serem executados na estrutura.

 

Exemplos:

- Uso correto:

//Com bloco de instruções
if(numero == 1)
{
    numero *= 2;
    printf("O número era 1 e foi multiplicado por 2!");
    printf("Digite um novo número: ");
    scanf("%d", &numero);
}
//Com uma única instrução
if(numero == 1)
    printf("O número é 1!");

- Uso incorreto:

if(numero == 1)
    numero *= 2;
    printf("O número era 1 e foi multiplicado por 2!");
    printf("Digite um novo número: ");
    scanf("%d", &numero);

//Neste caso, visando fazer o mesmo que era feito com o bloco, estaria incorreto, mas não daria erro.
//Este código seria entendido da seguinte forma:

if(numero == 1)
    numero *= 2;
printf("O número era 1 e foi multiplicado por 2!");
printf("Digite um novo número: ");
scanf("%d", &numero);

//Ou seja, para o compilador, se trataria apenas de uma falta de indentação do código.

 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

...

 

Ainda complementando esse exemplo @iHollyZinhO , onde temos apenas funções + declaração IF, e nada mais. Poderias substitui o operador-símbolo (;) por operador-símbolo (,) e finalizar com operador-símbolo (;), vai perceber o mesmo efeito do uso de chaves. Isso é interessante porque a maioria dos programadores reconhece o uso de vírgula apenas na declaração de variáveis de um mesmo tipo, e nunca viram blocos formatados com vírgula.

 

if (numero  ==  1)
      numero *=  2,
      printf ("O número era 1 e foi multiplicado por 2!\n"),
      printf ("Digite um novo número: "),
      scanf ("%d", &numero);  /* fim do comando if(...){...} */

 

Entretanto, prefiro seguir as recomendações do PhD. McCann, e também usar blocos sempre: em todas ocasiões até mesmo naquelas mais ingenuas.

 

Ok!? Tchau.

 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!