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

char

por que mesmo após limitar a quantidade de caracteres dentro de um char eu consigo exceder o limite dentro do codigo

1 resposta
solução!

Oi Filipe! Tudo bem?

O que acontece é que esse não é considerado um erro de compilação, então a única coisa que o C faz é armazenar todos os caracteres da forma que for possível, cortando o fim da palavra. Por exemplo, no código:


int main(){

    char palavra[5]= "Teste123";

    printf("%s \n", palavra);
}

Será salva e impressa a palavra "Teste", o "123' vai ser ignorado. No meu caso, apareceu um "Warning" do compilador, falando que a palavra armazenada era muito grande para o vetor de caracteres.

Isso acontece pela implementação interna das Strings. Elas são consideradas arrays de caracteres, mas por baixo dos panos utilizam ponteiros, que é um assunto que está um pouco à frente no curso que você está realizando. Quando a gente usa ponteiros, o sistema reserva um espaço e armazena o que queremos guardar. Mas, se colocarmos dados a mais e houver espaço, essa informação pode ser guardada também. No exemplo que dei, se no seu sistema tiver espaço, esse 123 está guardado em algum lugar, ele só não tem "nome", porque não tem nenhuma variável apontando para essa parte da palavra, já que o vetor palavra considerava apenas as 5 primeiras letras.

Parece um pouco complexo, mas à medida que você for trabalhando com a linguagem vai ficando mais claro. Caso não tenha entendido alguma coisa da explicação, pode ficar à vontade para perguntar!

Espero ter ajudado! Abraços e bons estudos!

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

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software