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