在while循环中将char转换为int
converting char to int in while loop
我正在用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--;
}
相关文章:
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 是否可以从int转换为enum类类型
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- 功能样式转换从 'int' 到 'ItemType' 的匹配转换
- 将 int 数组转换为 std::vector<int*>
- 如何转换 int 变量并附加到常量 wchar_t*
- 类型转换<int>的舍入问题
- 在Objective-C中调用sqlite3数据库时,如何调用和转换int/NSNumber
- 转换 int -> 无符号长 长 是否由标准定义
- 简单的 int 到字符串转换..int to const char* 无效
- 如何将转换 int 除法键入为浮点数
- C++类型转换 int * 到类
- 预期的类型说明符,并且无法在初始化时转换“int*”
- 转换int并将其与char*连接
- 字符串流在转换int型时添加新行
- 转换int为字符串/char c++ /Arduino
- c# P-Invoke:如何转换INT fun(BYTE *bStream, UINT16 *nCount, const
- 类型转换(int**)和int(*)的区别
- 从"int"到"nodeType"的无效转换<int>
- 从无符号int构造对强制转换int的引用