Oi Tom,
O erro que você encontrou, "comparison between signed and unsigned integer expressions [-Wsign-compare]", ocorre porque você estava comparando um inteiro com sinal (int
) com um inteiro sem sinal (size_t
), que é o tipo retornado por strlen
. Essa comparação pode levar a comportamentos inesperados, especialmente quando o valor de strlen
é grande.
A solução que você implementou, usando size_t
para o índice i
no loop for
, é a maneira correta de lidar com isso. Ao usar size_t
, você garante que o tipo do índice seja compatível com o tipo retornado por strlen
, eliminando o aviso do compilador e evitando possíveis problemas. 👍
Exemplo prático:
#include <stdio.h>
#include <string.h>
int main() {
char palavraSecreta[] = "alura";
// Maneira correta:
for (size_t i = 0; i < strlen(palavraSecreta); i++) {
printf("%c ", palavraSecreta[i]);
}
printf("\n");
return 0;
}
Para saber mais: Qual diferença entre os tipos de dados size_t e int na linguagem C?
Continue praticando e explorando a linguagem C! 💪 💻
![tux matrix](https://i.pinimg.com/originals/2b/ff/ff/2bffff2a58ad11c8122f914cbe99d43e.png)
Caso este post o tenha ajudado, por favor,
marcar como solucionado ☑️.
Bons Estudos! 🤓