我有一個程序,但是當程序要求輸入時我輸入浮點數時,程序突然跳過一個步並移到結束輸出。該方案是如下:將浮點數輸入到只處理整數的程序
#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