【发布时间】:2014-05-24 18:19:09
【问题描述】:
所以基本上我正在尝试开发一个简单的应用程序,它使用一个函数来确定用户输入的两个数字是否是第二个数字的倍数。
#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 >> num1 >> num2会做什么?它在变量中添加了什么? -
点阻止读取下一个整数。查看this 问题和答案,它也可能对您的情况有所帮助。
-
不会将其四舍五入,例如,如果我输入 2.5,它不会将其存储为 2 吗?
-
@user3311681:不。输入解析和相互分配变量是两件不同的事情。如果允许流只猜测您想要的类型,那么它就不可能始终正确。
标签: c++ function loops while-loop infinite