Sou iniciante

9 respostas
F

Ola! seguinte estou aprendendo por conta C mas me deparei com um problema no codigo abaixo

void main() {

int x= 10;

printf("%i\n", x);

return 0;

}

Deveria aparecer no console o valor 10 porem vem um valor completamente aleatório,alguém poderia me dar uma luz aqui

9 Respostas

TerraSkilll

O código funciona perfeitamente pra mim aqui, exibindo 10 no console.

Execução no Ideone: https://ideone.com/iX5jCZ

Que valor ele exibe para você?

Abraço.

F

exibe valores aleatórios tipo “12351” ou “45654”

F

TerraSkilll

Isso indica que a variável não está corretamente inicializada, por isso imprime “qualquer coisa”.

Que compilador/IDE está usando?

Só pra você comparar, eis meu código completo (basicamente igual ao seu):

#include <stdio.h>
 
int main(void) {
int x= 10;
printf("%i\n", x);
return 0;
}

Experimente também trocar o %i por %d, que é outro jeito de exibir inteiros em C, ficando:

printf("%d\n", x);

Abraço.

F

tentei no DEV C e no codeBlocks
mesmo erro,tentei com “%d\n” isso acontece também.

rodevops

Tente usar outro compilador como o MingW ou gcc por exemplo…

Outra forma de ver se o valor é impresso corretamente…

int x;
x = 10;

https://www.tutorialspoint.com/cprogramming/c_variables.htm

Talvez o compilador não está conseguindo pegar a inicialização da variável na definição dela e talvez você tenha que deixá-lo entender em duas etapas como mostrei…

Quanto ao %i vs %d, no printf não fazem diferença, mas no scanf o %i é usado para ler octais ou hexadecimais como inteiros…

TerraSkilll

Parece que está sendo impresso o endereço de memória da variável, não seu conteúdo, que é o que pode acontecer se você colocar & na frente da variável:

printf("%d\n", &x); // isso imprime algo como 1244908

Tente criar um projeto do zero, e copiar o código do meu segundo post.

Abraço.

rodevops

Engraçado que ele fez corretamente, o lixo de memória pode ser por causa do compilador mesmo, já li algo a respeito que se você define valor pra variável na criação dela, alguns compiladores não entendem…

O pessoal fala mal pra caramba desse DevC :joy: parece ser obsoleto/abandonado, como uso linux e tenho gcc padrão não passo essa raiva :grin:

wldomiciano

MinGW não é compilador e Dev-C++ é apenas uma IDE.

Pelos prints que vc postou, dá pra ver que tá usando o GCC 4.9.2 de 64 bits.

O programa não encerrou corretamente, ali mostra que ele terminou com valor de retorno 9, o correto seria 0.

Vc definiu a função main com tipo de retorno void, mas ao final do corpo dela vc usou return 0.

Tenho duas idéias. Tente uma das possiveis soluções:

  • Troque o tipo de retorno de main, tire o void e coloque int
#include <stdio.h> 
int main(void) {
    int x = 10;
    printf("%i\n", x);
    return 0;
}

OU

  • Remova a linha que tem o return 0;
#include <stdio.h>
void main(void) {
    int x = 10;
    printf("%i\n", x);
}
Criado 8 de setembro de 2017
Ultima resposta 8 de set. de 2017
Respostas 9
Participantes 4