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

Problema ao compilar no Vscode

Erro ao compilar o código: programa não esta interpretando corretamente j < strlen(palavrasecreta). De acordo com o aviso os valores comparados são "incompatíveis". int enforcou() { int erros = 0;

for (int i = 0; i < tentativas; i++) {
    int existe = 0;
    for (int j = 0; j < strlen(palavrasecreta); j++) {
        if (chutes[i] == palavrasecreta[j]) {
            existe = 1;
            break;
        }
    }
    if (!existe) erros++;
}

return erros >= 5; // O jogo acaba após 5 erros

}

3 respostas
Erro que aparece ao tentar compilar o codigo: comparison between signed and unsigned integer expressions 
solução!

Oi, Pedro! Tudo bem?

O erro "comparison between signed and unsigned integer expressions" acontece porque a função strlen() retorna um valor do tipo size_t, que é um número sem sinal (unsigned), enquanto sua variável j é do tipo int, que é com sinal (signed).

Para resolver isso, mude o tipo da variável j para size_t. Isso garante que ambos os valores comparados sejam do mesmo tipo.

Ajuste seu código assim:

int enforcou() {
    int erros = 0;

    for (int i = 0; i < tentativas; i++) {
        int existe = 0;
        for (size_t j = 0; j < strlen(palavrasecreta); j++) {
            if (chutes[i] == palavrasecreta[j]) {
                existe = 1;
                break;
            }
        }
        if (!existe) erros++;
    }

    return erros >= 5; // O jogo acaba após 5 erros
}

Com essa alteração, o erro de compilação deve desaparecer.

Bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Muito obrigado!