C++ 代码在一个带点的wser之后中断,并跳过代码的其余部分
如果我不使用像1.5这样的点,它会断开,但如果它是像15这样的整数,它就完美地工作了 我试图在互联网上寻找它,但没有找到修复它的方法C++ 代码在一个带点的wser之后中断,并跳过代码的其余部分,c++,for-loop,C++,For Loop,如果我不使用像1.5这样的点,它会断开,但如果它是像15这样的整数,它就完美地工作了 我试图在互联网上寻找它,但没有找到修复它的方法 #include <iostream> using namespace std; int main() { int n,sk,i,a,p,b,c; int kiek=0; cout << "insert how many shops did he went to" << endl; cin >
#include <iostream>
using namespace std;
int main()
{
int n,sk,i,a,p,b,c;
int kiek=0;
cout << "insert how many shops did he went to" << endl;
cin >> n;
b=n;
cout << "how many thing did he buy in every shop" << endl;
cin >> p;
c=p;
for(int n=0; b>n; n++)
{
a=0;
for (int i=1; i<=c; i++)
{
cout << "insert "<< i << " product price"<< endl;
cin >> sk;
a=a+sk;
}
cout<< "spent " << a<< " pmoney"<< endl;
}
return 0;
}
它应该让我输入他在每个产品上花了多少钱,但如果我添加一个。它跳过所有内容,只显示一个问题
整数类型不能存储十进制值
当您执行int-sk时;cin>>sk;输入1.5,操作符>>将在sk中存储1,并在流中保留.5。下次执行cin>>sk时,流将尝试读取流中剩余的下一个整数,但将失败,因为。无法转换为整数,使流处于“失败”状态。对于这一点,所有cin指令将无法读取下一个整数
解决方案
为了解决这个问题,我建议将价格值声明为double:double a,sk。但是,如果输入无效的浮点值,也会出现同样的问题。我强烈建议正确管理流错误并做出相应的反应。您可以使用或其相关方法good、fail、bad、eof访问状态。我使用3表示存储,5表示amount无法存储小数点。使用double或float。