2
respostas

Problema com a condição for

Fazendo de acordo com o vídeo da aula, dá erro na condição for. Eu só consegui solucionar o erro declarando a variável int i=1 fora da condição for.

abaixo esta meu código.

int i=1;

for(i=1;i <= 3; i++) {

 printf("Tenqtativa %d de 3\n",i);
    printf("Qual eh o seu chute? ");
    scanf("%d", &chute);
    printf("Seu chute foi %d\n", chute);

    int acertou = (chute == numerosecreto);

    if (acertou) {
        printf("Parabens! Voce acertou!\n");
        printf("Jogue de novo, voce eh um bom jogador!\n");
        system("pause");
    }
    else {
        int maior = chute > numerosecreto;
        if(maior) {
            printf("Seu chute foi maior que o numero secreto\n");
        } else {
            printf("Seu chute foi menor que o numero secreto\n");

        }
    }
}
2 respostas

Olá Masao, tudo bem ?

Esse comportamento pode acontecer mesmo dependendo da versão do gcc, a partir do chamado "C99" foi possível declarar variáveis dentro do for-loops

E a sua solução é a correta para esse casos, antes do "C99" a recomendação era mesmo declarar as variáveis antes do bloco, acredito que isso não irá te atrapalhar no andamento do seu curso, a única questão é que você pode simplificar e não ter que redeclarar o valor de i você pode apenas dizer int i; no começo do programa e dentro do for você declara o valor inicial de i dessa forma: for(i = 1; i <= 3; i++)

Abraços e Bons Estudos!

A linguagem C é padronizada por dois diferentes comitês; o ANSI e o ISO. Ambos possuem várias versões atualizadas de tempo em tempo, e possuem algumas incongruências entre si. Além disso, cada fabricante de compiladores possui um padrão próprio, por exemplo o padrão GNU.

No padrão ANSI C original a declaração de variáveis deveria ocorrer no início de um bloco, não sendo possível portanto fazê-lo dentro do laço for.

O compilador, por padrão, escolhe um padrão arbitrário como default. Se você usar uma versão mais nova, a chance é que esse problema não aconteça, mas, de todo modo, você pode alterar o padrão com o qual o compilador analisa o código. No gcc uma forma de superar esse obstáculo é utilizar a flag -std=c99. Verifique entretanto se o seu compilador é compatível com este padrão.