在while循环中将char转换为int

converting char to int in while loop

本文关键字:转换 int char while 循环      更新时间:2023-10-16

我正在用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();
}

程序运行良好,即它正确输入,但当我使用'='符号时,它只显示黑屏。请帮帮我。谢谢。

键入'='后,由于将num声明为整型,因此该字符将转换为整型。但不幸的是,结果并不如你所愿。转换失败!当从流中读取时发生错误时,将设置一个错误标志,并且在清除错误标志之前不能再读取。这就是为什么会出现hang

你的问题在于这个循环

while(num!='=')
   {
      sum=sum+num;
      cin>>num;
   }

我会告诉你为什么你的代码挂起,为什么不要求更多的输入,即使while循环中的条件失败。当您插入char而不是int时,会发生这种情况,当您输入'='时,流被损坏。

你需要使用这样的东西来避免挂起。

    {
        sum = sum + num;
        cin >> num;
        cin.clear();
        cin.ignore();
    }

当你的代码期望一个int时,不要插入一个字符,它会设置错误标志,并且不可能再读取。因为你不能用char来代替int,所以在开始的时候问用户他想加多少个数,然后运行你的循环多次来获得输入。

:

cout<<"Enter the number of items"<<endl;
cin>>items;
cout<<"Enter first item" <<endl;
while(items)
{
cin>>num;
sum=sum+num;
items--;
}