仅限十进制数的无限循环

时间:2014-04-10 20:22:59

标签: c++ function loops while-loop infinite

所以基本上我正在尝试开发一个简单的应用程序,它使用一个函数来确定用户输入的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;
}

现在当我用普通整数尝试它时它工作正常,但为什么当我输入第二个数字作为小数时,它进入一个无限循环?具体来说,这是它一直给出的陈述:

  

&#34;输入2个数字(-1退出):1是0和#34的倍数;

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

2 个答案:

答案 0 :(得分:1)

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

应该如下所示:     cin&gt;&gt; NUM1;     cin&gt;&gt; NUM2;

答案 1 :(得分:0)

如果用“十进制数”表示非整数,则不能将其放在int变量中。