Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro de compilação i e strlen

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Não entendi porque aparece esse problema:** comparison of integer expressions of different signedness: 'int' and 'size_t'**

1 resposta
solução!

Oi, tudo bem?

Isso acontece porque a função strlen() retorna um valor inteiro sem sinal, o unsigned int. Quando o compilador olha para os dois valores, vê de um lado um número inteiro normal e no outro um inteiro sem sinal. Em geral, ele consegue fazer a comparação e nos dar o resultado se os números são iguais ou não, mas gera esse warning, que é bem chatinho.

Para resolver isso, tem algumas maneiras, dentre elas:

Declarar i como unsigned int:

for(size_t i = 0; i < strlen(palavra_secreta; i++){
    // código omitido
}

Fazer casting durante a comparação, para que sejam do mesmo tipo:

for(int i = 0; i < (int) strlen(palavra_secreta; i++){
    // código omitido
}

Assim, o compilador vai considerar o retorno da função como um inteiro normal.

Fazendo qualquer uma dessas alterações, o alerta deve sumir e o código continuar funcionando normalmente.

Para conhecer mais sobre tipos de dados em C, recomendo a leitura da página de tipos de dados na linguagem C, do GeeksForGeeks, que está em inglês mas caso seja necessário, você pode utilizar a ferramenta de tradução do seu navegador para de auxiliar.

Em caso de dúvidas, estou à disposição.

Um grande abraço e bons estudos!

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