Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Declaração de variáveis entre os espaços dos blocos de condição

Coloquei esse código e deu certo.

#include <stdio.h>

int main(){

    //imprime cabeçalho do jogo.
    printf("************************************\n");
    printf("* Bem-vindo ao jogo de adivinhação *\n");
    printf("************************************\n\n");

    int numeroSegredo = 42;
    int chute;

    printf("Qual é o seu chute? ");
    scanf("%d", &chute);
    int maior = (chute < numeroSegredo);

    int acertou = (chute == numeroSegredo);

    if (acertou) {
        printf("\nParabéns! Você acertou o número segredo!\n");
    }
    else if(maior) {
        printf("\nSeu chute foi menor que o número segredo.\n");
    }
    else {
        printf("\nSeu chute foi maior que o número segredo.\n");        
    }

}

Entretanto ao testar esse código aparece um erro.

#include <stdio.h>

int main(){

    //imprime cabeçalho do jogo.
    printf("************************************\n");
    printf("* Bem-vindo ao jogo de adivinhação *\n");
    printf("************************************\n\n");

    int numeroSegredo = 42;
    int chute;

    printf("Qual é o seu chute? ");
    scanf("%d", &chute);

    int acertou = (chute == numeroSegredo);

    if (acertou) {
        printf("\nParabéns! Você acertou o número segredo!\n");
    }
    ///Reparem que nessa eu declarei a variável entre o if e o else if.
    int maior = (chute < numeroSegredo);
    else if(maior) {
        printf("\nSeu chute foi menor que o número segredo.\n");
    }
    else {
        printf("\nSeu chute foi maior que o número segredo.\n");        
    } 
}
Nesse caso ele mostra no depurador : "esperado uma instrução"
Quero saber o porquê que isso acontece.
2 respostas
solução!

Olá Pedro.

Isso tem relação com o compilador da linguagem, ele faz varias verificações antes de compilar, como por exemplo, saber se o código está obedecendo as regras da linguagem, nesse caso o seu código está quebrando a regra que antes de um else deve sempre existir um if. E no seu exemplo:

int maior = (chute < numeroSegredo);
    else if(maior) {
        printf("\nSeu chute foi menor que o número segredo.\n");
    }

Tem uma declaração de variável antes do else, algo que quebra a regra.

Gerando um erro como:

main2.c:23:5: error: ‘else’ without a previous ‘if’
     else if(maior) {
     ^~~~

Outro exemplo de regra é que devemos sempre fechar as chaves que abrimos ou que devemos colocar ponto e virgular no final das instruções, cada linguagem tem suas próprias regras.

Espero ter ajudado, bons estudos.

Obrigado pela resposta.