Inputting flutua em um programa que lida apenas com ints
Eu tenho um programa, mas quando eu introduzo números flutuantes sempre que o programa solicita entradas, o programa pula abruptamente um passo e passa para a saída final. O programa está abaixo:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,b,c;
int i;
printf("Please enter a number: ");
scanf("%d", &a);
printf("Please enter a number: ");
scanf("%d", &b);
c = 0;
for(i=0; i < b; i++)
{
c = c + a;
}
printf("%d x %d = %d\n", a, b, c);
return 0;
}
Quando introduzo um int paraa
e uma bóia parab
, o programa produzirá o produto conforme o esperado se os números após o ponto decimal parab
está truncado. No entanto, quando insiro um float paraa
, o programa não aceita o valor do segundo númerob
e pula essa etapa e gera a versão inteira dea x -858993460 = 0
.
Por exemplo
a = int, b = flutuante
Digite um número: 3
Digite um número: 5.6
3 x 5 = 15
a = flutuante, b = ignorado
Digite um número 3,9
Digite um número: 3 x -858993460 = 0
Todas as falhas no código são deliberadas, mas eu só queria saber por que ele se comporta da maneira que expliquei acima. Eu sei que é por causa de algo a ver com a tentativa de inserir um float em um número inteiro assinado, mas não tenho certeza do que exatamente está fazendo com que ele pule o segundoscanf("%d", &b)
. Alguém pode explicar por que isso acontece?
Obrigado