Não entendi porque aparece esse problema:** comparison of integer expressions of different signedness: 'int' and 'size_t'**
Não entendi porque aparece esse problema:** comparison of integer expressions of different signedness: 'int' and 'size_t'**
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:
i
como unsigned int:for(size_t i = 0; i < strlen(palavra_secreta; i++){
// código omitido
}
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!