gpt4 book ai didi

c++ - 为什么这会导致无限循环与字符而不是 double ?

转载 作者:行者123 更新时间:2023-11-30 05:25:24 26 4
gpt4 key购买 nike

我觉得我做错了一件非常愚蠢的事。我只希望程序在用户输入非 double 值时告诉用户,并继续循环回到您输入值的 cin。

我希望用户输入任意数字。然后必须做这个简单的数学并重复。它在这方面工作正常,当输入一些意外输入(如字符)时会出现问题。然后输入以某种方式将其发送到一个循环中,在循环中循环数学问题,而不是仅仅告诉用户他们必须输入一个数字并循环回到 cin 输入一个新数字。

#include <iostream>
#include <cstdlib>

using std::cout; using std::cin; using std::endl;

long double domath(long double i)
{
cout << i << "/" << 2 << "=" << i/2 << endl;
cout << i/2 << "*" << 10 << "=" << (i/2)*10 << endl << endl;
cout << 5 << "*" << i << "=" << 5*i << "\n\n";
return 0;
}

int main()
{

long double in = 0;

while(true)
{
cin >> in;
if (cin.fail()) {
in = char(int(in));
}
domath(in);
}
system("pause>nul");
return 0;
}

最佳答案

如果失败,您不会清除 cin,它会无限地尝试将错误的输入解析为 double,每次都失败。如果出错,您需要清除缓冲区:

if (cin.fail()) {
cin.clear();
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
in = char(int(in));
}

此外,无法理解您要实现的目标

in = char(int(in));

in 是一个 long double 变量,将保存您分配给它的最后一个值,无需“转换”它来进行数学计算。

关于c++ - 为什么这会导致无限循环与字符而不是 double ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38270632/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com