我有一个程序,但是当程序要求输入时我输入浮点数时,程序突然跳过一个步并移到结束输出。该方案是如下:将浮点数输入到只处理整数的程序
#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;
}
当我输入a
一个int,和浮子为b
,程序将输出如果小数点后b
的数字被截断为预期的产物。但是,当我输入浮点数为a
时,程序不会取第二个数字b
的值,而跳过该步骤并输出a x -858993460 = 0
的整数版本。
例如:
一个= INT,B =浮
请输入一个数:3
请输入一个数:5.6
3×5 = 15
a =浮动,b =跳过
请输入一个数字3.9
请输入号码:3×-858993460 = 0
在代码中所有的缺陷是故意的,但我只是想知道为什么它的行为我上面所解释的方式。我知道这是因为尝试将浮点数输入到有符号整数中,但我不确定究竟是什么导致它跳过第二个scanf("%d", &b)
。谁能解释为什么会发生这种情况?
谢谢。
相关讨论:http://stackoverflow.com/questions/4016073/scanf-fails-why – Mahesh