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

标签 c++

我的程序是一个计算器,目前只做加减法,但当我输入一个大数字时,它开始闪烁和滚动。它适用于少量。节目不长,就到这里吧。问题的 YouTube 视频 https://youtu.be/Fa03WtgXoek

 #include <iostream>

 int GVFU()
{
std::cout <<"enter number";
int a;
std::cin >> a;
return a;
}

int add()
{
int x = GVFU();
int y = GVFU();
int z = x + y;
std::cout <<z <<std::endl;
return 0;
}

int subtract()
{
int x = GVFU();
int y = GVFU();
int z = x - y;
std::cout <<z << std::endl;
return 0;
}

int main()
{
for ( ; ; )
{

std::cout << "enter 1 for addition and 2 for subtraction";
int c;
std::cin >> c;
if (c==1)
{
add();
}
if (c==2)
{
    subtract();
}
std::cout << "press 1 to end";
int e;
std::cin >>e;
if (e==1)
{
    return 0;
}
}
}

最佳答案

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

独立地,在 C++ 中,int 类型的整数值具有最小和最大可能值,这取决于您使用的编译器和系统。如果在输入数字时超过该值,cin 将认为读取失败。

综上所述,一旦您输入的值太大,程序将继续运行程序中的主循环,提示输入一个值,立即返回而不实际获取用户输入,然后计算垃圾值。

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

关于c++ - 为什么当我输入一个大数字时我的计算器程序开始闪烁和滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45651658/

相关文章:

c++ - 将 allegro 4 移植到 allegro 5

c++ - 使用基类而不是基指针来处理派生类

c++ - 在异常对象上调用 std::move 是否正确?

c++ - 使用 boost 图创建结构

c++ - 在 C++ 中使用指针复制字符串,在复制过程中程序崩溃

c++ - 如何从 C/C++ 中的以下函数获取所有参数?

C++ 编译器错误 C2371 - WCHAR 的重新定义

c++ - 传入一个递增 boost::fusion:vector 元素的函数

c++ - 如何在OpenCV中实现一个等价于bwmorph Matlab函数的函数

c++ - 从 Visual Studio 运行应用程序会导致错误(由 CMake 生成)