Code::Blocks com erro de compilação

1. Code::Blocks com erro de compilação

Ederson Divino P O Neves
Notoriobit

(usa Debian)

Enviado em 16/09/2016 - 17:18h

Povo da Terra, preciso de uma ajuda:

Instalei a IDE Codeblocks em meu Debian Jessie recentemente. Ate aí tudo bem. Porém quando por exemplo você executa um for de 10 posições, a numeração aparece além de negativa, com muitos algarismos ex:
int cont;
for (cont=0; cont<10;cont++){
printf("%dn");
}
Retorna: -1234987066 -1234564534345 -1237654556 e assim por diante
Olhei em todas as configurações , mas não achei, creio que seja um problema de memória, não sei, se alguém puder ajudar agradeço.
Que a força esta com vocês.


  


2. Re: Code::Blocks com erro de compilação

Perfil removido
removido

(usa Nenhuma)

Enviado em 16/09/2016 - 17:25h

Notoriobit escreveu:

Povo da Terra, preciso de uma ajuda:

Instalei a IDE Codeblocks em meu Debian Jessie recentemente. Ate aí tudo bem. Porém quando por exemplo você executa um for de 10 posições, a numeração aparece além de negativa, com muitos algarismos ex:
int cont;
for (cont=0; cont<10;cont++){
printf("%dn");
}
Retorna: -1234987066 -1234564534345 -1237654556 e assim por diante
Olhei em todas as configurações , mas não achei, creio que seja um problema de memória, não sei, se alguém puder ajudar agradeço.
Que a força esta com vocês.


    int cont;
for (cont=0; cont<10;cont++){
printf("%d\n", cont);
}


Tente agora.

----------------------------------------------------------------------------------------------------------------
Nem direita, nem esquerda. Quando se trata de corrupção o Brasil é ambidestro.
(anônimo)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden



3. Problema solucionado !

Ederson Divino P O Neves
Notoriobit

(usa Debian)

Enviado em 17/09/2016 - 10:27h

Agradeço à dica do colega, porém descobri qual é o problema e sei que muitos também passam por isso:

É interessante que antes de você começar a trabalhar com o CODEBLOCKS dê uma limpada no cache do Debian, pois a numeração esquisita é lixo acumulado na memória, por isso que ele retorna esse número maluco. Eu utilizei esses comando para limpeza e deu tudo ok !

# echo 3 > /proc/sys/vm/drop_caches

# sysctl -w vm.drop_caches=3


Essa dica foi de um colega aqui do fórum que peço desculpas , esqueci de pegar seu nome, mesmo assim agradeço a todos !!!


Valeu povo da Terra.
Que a força esteja com vocês.







4. Re: Code::Blocks com erro de compilação

Paulo
paulo1205

(usa Ubuntu)

Enviado em 17/09/2016 - 19:41h

Notoriobit escreveu:

Agradeço à dica do colega, porém descobri qual é o problema e sei que muitos também passam por isso:

É interessante que antes de você começar a trabalhar com o CODEBLOCKS dê uma limpada no cache do Debian, pois a numeração esquisita é lixo acumulado na memória, por isso que ele retorna esse número maluco. Eu utilizei esses comando para limpeza e deu tudo ok !

# echo 3 > /proc/sys/vm/drop_caches

# sysctl -w vm.drop_caches=3


A resposta certa foi dada pelo listeiro_037. Isso tudo que você disse sobre cache _de disco_ não tem a menor relação com o resultado esdrúxulo que você viu.

Todos aqui já fomos novatos em programação, do mesmo jeito como você é hoje. Às vezes, nossa inexperiência é tão grande que não conseguimos nem mesmo enxergar erros grosseiros que nós mesmos cometemos, e “preferimos” lançar a culpa do resultado aparentemente estapafúrdio que recebemos sobre fatores completamente alheios à real causa desse resultado.

No seu caso, o resultado era fruto de um erro no seu programa original: você dizia à função printf() que ela deveria imprimir um valor inteiro, mas não passava esse valor como argumento para a função. Note bem a diferença.

/ * Modo correto */
printf("%d\n", cont);

Aqui, "%d\n" é a string de formatação, que controla o comportamento de printf(). A parte “%d” diz que a função vai receber outro argumento, além da própria string, que corresponde a um valor inteiro, e que esse valor deve ser impresso como um numeral decimal (ou seja: usando os dez algarismos que vão de '0' a '9'). Já a parte “\n” da string de formatação é a notação do C para indicar o caráter que representa a quebra de linha (você pode ler sobre as sequências de escape de caracteres em C em https://en.wikipedia.org/wiki/Escape_sequences_in_C, por exemplo).

O segundo argumento passado à função é o valor da variável cont. Esse é o valor que será usado para calcular o numeral a ser impresso, conforme especificado pela instrução “%d” da string de formatação, conforme vimos acima.

/* Modo como você fez (ATENÇÃO: esse modo é ERRADO!) */
printf("%dn");

Aqui, a string de formatação diz que a função vai receber um segundo argumento do tipo inteiro, cujo valor deve ser usado para imprimir um numeral decimal, e logo em seguida imprime a letra “n” (para ser uma quebra de linha, faltou a barra invertida antes do “n”).

Só que você não colocou o segundo argumento, correspondente ao “%d”, na chamada da função. Mas o interior da função printf() não sabe que esse argumento faltou, e se comporta como se ele estivesse presente. Esse comportamento implica buscar na memória um dado inteiro. Mas em que lugar da memória? O que há nele?

Do ponto de vista do C, a resposta a essas perguntas é indeterminada. Na prática, as respostas dependem do compilador e de condições do ambiente de execução do programa no momento em que ele é executado. Seu programa é inválido, com qualquer coisa podendo acontecer: imprimir lixo, imprimir um valor constante, fazer o programa capotar, ou até mesmo corromper o funcionamento de outras partes do sistema.



5. ????

Ederson Divino P O Neves
Notoriobit

(usa Debian)

Enviado em 28/09/2016 - 17:24h

Me desculpe, mas não entendi o motivo do seu Stress todo. O que eu digite aqui na mensagem estava errado pois escrevi com pressa. Os códigos estavam de fato com erro. Alimpeza que eu mencionei deu certo. Eu não pedi uma comida de toco, mas uma ajuda. Mesmo assim sou grato.


6. Re: Code::Blocks com erro de compilação

Paulo
paulo1205

(usa Ubuntu)

Enviado em 30/09/2016 - 08:39h

Não houve stress nenhum, nem tenho eu a menor ideia de o que quer dizer “comida de toco“ (sic).

Tudo o que eu fiz foi chamar sua atenção para o fato de que aquilo que você apontou como solução, depois de desprezar a resposta correta dada por outro colega, não tinha e não tem nenhuma relação com o problema original, que consistia num simples erro de programação. Além disso, eu expliquei claramente onde estava o erro, por que estava errado, e como fazer do jeito correto.

Sinceramente não faço ideia de como você pode enxergar qualquer coisa além da mais tranquila e desinteressada ajuda.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts