У меня есть программа, но когда я ввожу числа с плавающей запятой всякий раз, когда программа запрашивает ввод, программа внезапно пропускает шаг и переходит к конечному выходу.Ниже приведена программа:
#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;
}
Когда я введу int для a
и число с плавающей запятой для b
, программа выведет продукт в соответствии с ожиданиями, если числа после десятичной точки для b
усечено.Однако при вводе числа с плавающей запятой для a
программа не принимает значение для второго числа b
, а вместо этого пропускает этот шаг и выводит целочисленную версию a x -858993460 = 0
.
Например:
a = int, b = float
Пожалуйста, введите число: 3
Пожалуйста, введите число: 5,6
3 x 5 = 15
a = плавать, b = пропущено
Пожалуйста, введите число 3,9
Пожалуйста, введите число: 3 x -858993460 = 0
ВсеНедостатки в коде являются преднамеренными, но я просто хотел знать, почему он ведет себя так, как я объяснил выше.Я знаю, что это связано с попыткой ввести число с плавающей запятой в целое число со знаком, но я не уверен, что именно заставляет его пропустить второй scanf("%d", &b)
.Кто-нибудь может объяснить, почему это происходит?
Спасибо.