如何使用CIN.FAIL()杀死程序
How to kill off a program with cin.fail()
因此,我正在尝试制定条件,以便用户输入除整数以外的任何内容,程序将终止。每当我认为字母A时,程序反复输出零。我认为它的退出()就是问题,但是当我替代它时,我也有同样的问题。建议?
#include <iostream>
#include <cctype>
#include <cstdlib>
using namespace std;
void even(int);
void odd(int);
int main()
{
int i;
do{
cout << "Enter an integer" << endl;
cin >> i;
if(i % 2 == 0)
even(i);
else if (i % 2 == 1)
odd(i);
else if (cin.fail())
exit (0);
}while(!isdigit(i));
return (0);
}
void even(int i)
{
cout << i << endl;
}
void odd (int i)
{
//nothing here
}
如果cin >> i
失败,则未分配变量i
。在您的程序中,这意味着它仍然具有不确定的值。使用不确定的值如(i % 2 == 0)
中的不确定行为,这意味着就C 标准而言,任何事情都可能发生。
在大多数常见的系统上,变量i
将具有一定的值,从上一次使用某些寄存器或内存的剩余内容。这个值是偶数或奇怪的。因此,如果i
恰好为零或阳性,您的fail
检查将永远无法达到。
您可能要先重新排序if
检查以检查cin
,并且仅在提取成功的情况下仅使用i
。
我想您的程序中的一些调整应该为您解决问题:
if (cin.fail())
exit (0);
else if(i % 2 == 0)
even(i);
else if (i % 2 == 1)
odd(i);
相关文章:
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 如何声明一个可以在整个程序中使用的全局 2d 3d 4d .. 数组(堆版本)变量?
- 程序以使用 C++ 中的 while 循环查找一组数字的最小值
- 我可以在 iOS 或 mac 应用程序中使用C++代码吗?
- 为什么我的程序在使用预留后没有加速?
- 在C++程序中使用的迭代器中未处理的异常
- 如何在C++程序中使用下标数字?
- 程序在使用 system() 启动另一个可执行文件时停止
- C++ 程序菜单使用做同时和切换
- 在 Flutter 应用程序中使用 Android NDK 中的 AssetManager 类
- 程序崩溃使用boost::asio
- 在安卓应用程序中使用.exe文件
- 在自定义程序中使用本机 Windows 自然顺序排序
- 程序以使用C++找到树的最深叶子的总和
- 我需要如何更改我的程序以使用打开/关闭原则?
- 调试 ASP MVC 应用程序中使用的C++ DLL
- 在C++应用程序中使用 Tensorflow:如何释放 GPU 内存
- 如何设置Qt应用程序以使用类Unix系统的实际环境变量?
- 在C++和 Python 程序中使用命名管道的 IPC 挂起
- 如何将IEnumerable与Process.Start的输出事件处理程序一起使用?