仅用于十进制数的无限循环

infinite loop for decimal number only

本文关键字:无限循环 十进制数 用于      更新时间:2023-10-16

因此,基本上我正在尝试开发一个简单的应用程序,该应用程序使用一个函数来确定用户输入的2个数字中的第二个数字是否是第一个数字的倍数。

#include<iostream>
using namespace std;
int multiple( int n1, int n2){
    if(n1%n2 ==0)return 1;
    else return 0;
}
int main(){
    int num1, num2;
    cout<<"Enter 2 numbers (-1 to exit): ";
    cin>>num1>>num2;
    while (num1 !=-1 && num2 != -1){
        if (multiple (num1, num2)==1)cout<<num2<<" is a multiple of "<<num1<<endl<<endl;
        else cout<<num2<<" is not a multiple of "<<num1<<endl<<endl;
        cout<<"Enter 2 numbers (-1 to exit): ";
        cin>>num1>>num2;
    }
    return 0;
}

现在,当我尝试使用普通整数时,它工作得很好,但为什么当我输入第二个数字作为小数时,它会进入一个无限循环?具体来说,这是它不断给出的声明:

"输入2个数字(-1退出):1是0的倍数"

调试器显示,由于某种奇怪的原因,num1变成了0。我知道我可以通过使用if语句来克服这一点,但出于我自己的好奇心,有人能解释为什么会发生这种情况吗?我可以为您提供任何其他需要的东西,如果有任何相关性,我将使用xCode

将两个变量放在一个cin上。

它应该是这样的:cin>>num1;cin>>num2;

如果"十进制数"是指非整数,则不能将其放入int变量中。