C++ C++;无限循环导致堆栈溢出错误?
好的,我一直在做我的计算器。我目前正试图让它告诉一个有效的整数和字符之间的区别。作为一个简单的解决办法,我做了:C++ C++;无限循环导致堆栈溢出错误?,c++,function,stack-overflow,infinite-loop,C++,Function,Stack Overflow,Infinite Loop,好的,我一直在做我的计算器。我目前正试图让它告诉一个有效的整数和字符之间的区别。作为一个简单的解决办法,我做了: int calc() { cout << "Number 1:"; cin >> fnum; cout << "Number 2:"; cin >> snum; if (snum <= -1000 || fnum <= -1000) { cout << ("Error: Inval
int calc()
{
cout << "Number 1:"; cin >> fnum;
cout << "Number 2:"; cin >> snum;
if (snum <= -1000 || fnum <= -1000)
{
cout << ("Error: Invalid Number!") << endl;
calc();
}
else
{
ff();
}
return 0;
}
int-calc()
{
cout>fnum;
cout>snum;
if(snumEDIT:ok,这段代码有很多方面
wait = 0;
while (wait <= 5)
{
wait++;
}
确保在文件中包含
。检查输入操作的结果。与while循环相比,Recursion在这种情况下增加了什么附加值?这不是无限循环,而是无限递归代码的全部要点是检查它是否是数字。因为我们可以说……LOL是最重要的R>=-1000,因为它不是一个数字,所以它应该失败。所以它确实是这样。但是当它返回时,它甚至不要求用户输入就继续循环。我试图在输入请求之前将变量设置为零,但它仍然进入循环。(我对C++也是非常新的,因此我做了一个简单的计算器)。如果您需要查看所有代码,您可以在此处找到它:您需要发布循环,而不仅仅是它的函数。@user2396111我在中添加了一个编辑。它不漂亮,但希望您能接受我的建议。等待函数是一个实验。我学到的大部分内容都是自学的。我读了一本书的几章,决定尝试一下。好的,所以我让一个朋友看了一遍,他清理了很多东西。只是把东西移到不同的地方,早点结束main();函数!
if (snum >= 0 || fnum >= 0)
{
cout << ("Error: Invalid Number!") << endl;
wait = 0;
while (wait <= 5)
{
wait++;
}
system("CLS");
calc();
}
std::string err = "error!";
try {
std::cin >> x;
if(!cin)
throw err;
//....
}
catch(std::string& ee)
{
std::cout << ee << std::endl;
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(),'\n');
}