C++ 当我输入一个大数字时,为什么我的计算器程序开始闪烁和滚动

C++ 当我输入一个大数字时,为什么我的计算器程序开始闪烁和滚动,c++,C++,我的程序是一个计算器,目前只做加法和减法,但当我输入一个大的数字,它开始闪烁和滚动。它适用于小数字。节目不长,就在这里。关于这个问题的youtube视频 #包括 int GVFU() { std::cout a; 返回a; } int add() { int x=GVFU(); int y=GVFU(); intz=x+y; std::cout如果尝试从cin读取值,而读取的值与预期格式不匹配,则会导致流失败,并且所有未来的读取操作将立即返回,而不读取任何内容 独立地,int类型的C++整数值有

我的程序是一个计算器,目前只做加法和减法,但当我输入一个大的数字,它开始闪烁和滚动。它适用于小数字。节目不长,就在这里。关于这个问题的youtube视频

#包括
int GVFU()
{
std::cout a;
返回a;
}
int add()
{
int x=GVFU();
int y=GVFU();
intz=x+y;

std::cout如果尝试从cin读取值,而读取的值与预期格式不匹配,则会导致流失败,并且所有未来的读取操作将立即返回,而不读取任何内容

独立地,int类型的C++整数值有一个最小和最大可能值,这取决于您使用的编译器和系统。如果在输入一个数时超过该值,CIN将认为它是一个失败的读。 综上所述,一旦您输入了一个太大的值,程序将继续在程序的主循环中运行,提示输入一个值,立即返回而不实际获得用户输入,然后计算垃圾值

要解决此问题,您需要(1)只希望用户不会输入任何意外的内容,或者(2)更可靠地获取用户输入。关于如何在堆栈溢出问题上执行选项(2),这里有很多很好的解释,现在您知道问题的根本原因是什么,希望您能够修复代码并使其正常工作!

使用

std::cout << std::numeric_limits<int>::max() << std::endl;

std::cout您将输入作为“int”,int的值范围在-2147483648到2147483647之间。
这意味着,如果超过该值2147483647,则不能将其存储为整数(int)类型。

对于这样大的数字,您可能应该使用长数据类型。

如果用户输入的数据超过
整数限制,您可以在代码中添加以下检查

int GVFU()
{
    std::cout <<"enter number";
    int a;
    std::cin >> a;
    if(cin.fail())
    {
        cin.clear();
        cin.ignore(numeric_limits<streamsize>::max(), '\n');
        cout << "Invalid input " << endl;

    }
    return a;
}

你的输入读取函数失败,你没有检查任何地方是否有错误。你可能接受了一个字符而不是整数,从而进入了一个无休止的循环。关于这个主题的更多信息。但是如果用户输入了一个非常大的数字,unsigned long不会还会遇到同样的问题吗?当然,同样的事情也会发生,如果他需要插入更大的数字,我只是想给他一些建议:-)对否决票的解释更受欢迎..将有助于确定答案
int GVFU()
{
    std::cout <<"enter number";
    int a;
    std::cin >> a;
    if(cin.fail())
    {
        cin.clear();
        cin.ignore(numeric_limits<streamsize>::max(), '\n');
        cout << "Invalid input " << endl;

    }
    return a;
}
#include <iostream>
#include <cstdlib>

using namespace std;

int GVFU()
{
    std::cout <<"enter number";
    int a;
    std::cin >> a;
    if(cin.fail())
    {
        cin.clear();
        cin.ignore(numeric_limits<streamsize>::max(), '\n');
        cout << "Invalid input " << endl;
        std::exit(EXIT_FAILURE);
    }
    return a;
}
enter 1 for addition and 2 for subtraction1
enter number4535245242
Invalid input 
Program ended with exit code: 1