如果首先输入浮点数,我的程序为什么会跳过完成,但是对整数有效?

ACH*_*ACH 2 c

当我输入任何浮动作为第一个数字时,我发生的问题.其他所有东西都要完成,但输出看起来像是一个存储的内存地址?
如果我使用任何整数,程序可以正常工作.我希望程序将用户的任何数字输入转换为整数.
虽然我明确要求输入整数,但如果用户输入2.2,我希望程序将其称为2,然后继续询问他们的第二个输入.

#include <stdio.h>

int main(void)
{
    // creating two variables
    int firstNumber;
    int secondNumber;

    //asking user to input a number
    printf("Enter your first integer value: ");
    scanf("%d", &firstNumber);
    printf("\nThe integer value you entered is %d.\n", firstNumber);

    //asking user to enter another number
    printf("\nEnter your second integer value: ");
    scanf("%d", &secondNumber);
    printf("\nThe second integer value you entered is %d.\n", secondNumber);

    /* system("pause"); */
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Ste*_*ocy 5

因为第一个scanf()成功读取浮点数的整数部分作为整数然后第二个scanf()尝试读取另一个整数但失败,因为它运行到小数点.要意识到的是,scanf()对于一个整数,当它遇到一个非数字字符时会停止读取,并且它会将该字符留在输入流中.