Ir ao conteúdo
  • Cadastre-se
Gustavo Malheiro

C Algo está fazendo somar 8 ao resultado final e eu não consigo identificar.

Recommended Posts

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>

//Ex9 - Soma de uma sequência de 10 números

int main(void){

	setlocale(LC_ALL,"portuguese");
	int i, soma, numero[10];

	printf("Insira aqui 10 números:\n");

	for(i=0; i<10; i++){
		scanf("%d",&numero[i]);

        soma = soma + numero[i];
	}

    printf("A soma dos 10 numeros inteiros é %d", soma );

    system("pause");
	return 0;
}

Algo no código está fazendo somar 8 ao resultado final.

Ex: o resultado final deveria ser 20 (2x10) e dá 28. 

  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, Gustavo Malheiro disse:

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>

//Ex9 - Soma de uma sequência de 10 números

int main(void){

	setlocale(LC_ALL,"portuguese");
	int i, soma=0, numero[10];

	printf("Insira aqui 10 números:\n");

	for(i=0; i<10; i++){
		scanf("%d",&numero[i]);

        soma = soma + numero[i];
	}

    printf("A soma dos 10 numeros inteiros é %d", soma );

    system("pause");
	return 0;
}

Basta você colocar soma=0 antes.

 

  • Obrigado 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Gustavo Malheiro       isso acontece por que você colocou a variável soma dentro da função main e com isso ela foi criada mas não foi inicializada , então para criar essa variável o compilador vai lá na ram e reserva um espaço para essa variável , mas nesse local reservado pelo compilador muito provavelmente já existe algum valor nele e com isso quando você for usar essa variável ela já conterá o valor que estava lá na memória , então para usar corretamente uma variável você precisa inicializar ela dizendo ao compilador qual valor ela deve ter e que geralmente é inicializada com valor zero ,   mas se você não quiser inicializar a variável basta você colocar ela como sendo global , que é colocar ela lá no início antes da função main  , assim além dela ser inicializada com valor zero ela poderá ser acessada em qualquer parte do programa até mesmo dentro de outras funções .

  • Curtir 1
  • Obrigado 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Gustavo Malheiro  Olá. Como é de extrema importância entender bem a respeito desse assunto, tanto saber o que ocorre ao ser criada uma variável como também  ser atribuído um valor a mesma, recomendo dar uma olhada no material do link abaixo:

http://www.ic.unicamp.br/~wainer/cursos/2s2011/Cap03-TiposBasicos-texto.pdf

 

Desse link, vou passar uma parte q explica bem o q ocorre para um caso como o seu:

 

"É interessante entender o que acontece no computador como conseqüência da declaração de uma variável. Durante a execução do programa, a variável estará associada com posições reais de memória, que são um recurso compartilhado entre todos os programas em execução no computador. Quando declaramos uma variável em um programa, ela será associada com uma (ou mais) célula de memória disponível logo antes de iniciar a execução do programa, i.e., a variável não está associada a nenhum outro dado de nenhum outro programa que esteja executando no momento. Durante toda a execução do nosso programa, o computador garante que apenas nosso programa pode acessar e modificar o conteúdo dessa célula de memória. Porém, provavelmente em algum momento antes do início do nosso programa, esta célula foi utilizada por um outro programa que já terminou sua execução e deixou lá armazenado um valor qualquer. Note que, se a variável for declarada sem atribuição de valor inicial, a célula correspondente mantém o valor que já estava na memória quando nosso programa inicia sua execução, e que pode ser qualquer valor, imprevisível, deixado pelo outro programa. Se esquecermos de atribuir um valor à uma variável antes de usar seu conteúdo pela primeira vez no programa, então o valor lá encontrado será algo que certamente não desejamos usar em nosso algoritmo. Se usarmos esse valor arbitrário é certo que produziremos resultados errôneos. Esquecer de atribuir um valor às variáveis antes de usar seu conteúdo pela primeira vez é uma causa comum de erros obscuros em C."

  • Curtir 1
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Gustavo Malheiro     isso mesmo ,  geralmente se inicializa com valor zero mas você pode inicializa-la como valor que você quiser , o importante é que você saiba qual valor ela terá no momento que for usa-la .

  • Curtir 1
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×