Ir ao conteúdo
  • Cadastre-se

C porque esse simples código dá bug?


Ir à solução Resolvido por Marcos Caique,

Posts recomendados

 Fui fazer esse código para um trabalho e ele me retorna valores indesejados, achei estranho pois apliquei exatamente o que aprendi e mesmo assim ainda fui atrás de um vídeo explicando, o método usado foi o mesmo e deu certo lá, consegui fazer de outra maneira mas estou curioso pra saber porque não está dando certo-- códigos abaixo.

Código bugado

#include <stdio.h>
int main()
{
	
	float conta, contaF;
	
	printf("Coloque a conta:");
	scanf("%f", &conta);
	
	contaF = conta + (conta * 0,10);
	
	printf("Valor com gorjeta é de: %f", contaF);
	
	return 0;
}

Codigo Funcional

#include <stdio.h>
int main()
{
	
	float conta, contaF;
	
	printf("Cliente, digite o valor da conta: R$");
	scanf("%f", &conta);
	
	contaF = conta + (conta * ((float)10/(float)100));
	
	printf("O total deu: R$%.2f", contaF);
	
	return 0;
	
	
}

Eu não aprendi a necessidade do Float antes dos números, realmente precisa?

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

  • Solução

@LucasrodriguesP Provavelmente você está obtendo valores indesejados devido a um erro de digitação quando você atribui valor a variável contaF. 

1 hora atrás, LucasrodriguesP disse:
contaF = conta + (conta * 0,10);

Quando utilizamos numeros decimais no código sempre devemos utilizar o ponto ao em vez da virgula, pois o compilador não irá reconhecer que se trata de um número decimal caso utilize a virgula. Nesse caso utilize 0.10 ao em vez do 0,10

 

1 hora atrás, LucasrodriguesP disse:
contaF = conta + (conta * ((float)10/(float)100));

Nesse caso foi utilizado o float antes dos números somente para especificar que ele deseja obter um valor em decimal do resultado da divisão, pois na linguagem C quando realizamos operações com números inteiros, o resultado obtido também será inteiro, mesmo no caso em que o resultado da operação seja armazenada em uma variável do tipo float. Nesse caso, tanto o 10 e o 100 são inteiros e ao dividir ao em vez do resultado obtido ser o 0.1 ele será aproximado para 0, pois o resultado seria inteiro caso não fosse especificado o float. Aconselho dar uma lida no tópico 2 desse site Conversão de tipo em C (inteiro e "real") para entender um pouco melhor caso não tenha ficado tão claro.

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!