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

questionAnswers(3)

yourAnswerToTheQuestion