我正在用c ++开发一个计算器程序。但问题是,当我尝试将字符转换为整数时,它会显示运行时错误。代码如下。
#include<iostream.h>
#include<conio.h>
void main()
{
clrscr();
int num,sum=0;
cout<<"Enter the number"<<endl;
cin>>num;
while(num!='=')
{
sum=sum+num;
cin>>num;
}
cout<<"The sum is"<<endl;
getch();
}
程序运行良好,即正确输入,但是当我习惯按'='符号时,它只显示黑屏。请帮我。三江源。
答案 0 :(得分:0)
你的问题在于这个循环
while(num!='=')
{
sum=sum+num;
cin>>num;
}
我会告诉你为什么你的代码挂起,为什么不要求更多的输入,即使while循环中的条件失败。当您输入char
流已损坏时,当您向某些内容插入int
而不是'='
时会发生这种情况。
你需要使用这样的东西来避免挂起。
{
sum = sum + num;
cin >> num;
cin.clear();
cin.ignore();
}
当代码期望int时,不要插入char,它会设置错误标志,不能再读取。因为你不能在int中输入char,所以在开始时询问用户他想要添加多少个数字,然后多次运行你的循环以获得输入。
像这样:cout<<"Enter the number of items"<<endl;
cin>>items;
cout<<"Enter first item" <<endl;
while(items)
{
cin>>num;
sum=sum+num;
items--;
}
答案 1 :(得分:0)
键入&#39; =&#39;后,将此字符转换为int,因为您将num声明为int。但不幸的是,结果并不像你预期的那样。转换失败!当从流中读取时发生错误时,将设置错误标志,并且在清除错误标志之前不能再读取。这就是你挂起的原因
请参阅cin for an int inputing a char causes Loop that is supposed to check input to go wild