Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;无限循环导致堆栈溢出错误?_C++_Function_Stack Overflow_Infinite Loop - Fatal编程技术网

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');
}