【发布时间】:2019-10-20 19:56:11
【问题描述】:
测试 cin 的非数字、非零和非负值并进入循环。看不到为什么对值
cout << "Invalid value input\n";
提前感谢您发现可能是一个愚蠢的错误。
#include <iostream>
using namespace std;
int main()
{
unsigned int integer;
cout<< "Enter a non negative number greater than 0: ";
cin>> integer;
do
{
while(!cin || integer <= 0)//validation condition
{
cout << "Invalid value input\n";
cin.clear();
cin.ignore(200, '\n');
cout<< "Enter a non negative number greater than 0: ";
cin>> integer;
}
cout<< "Enter a non negative number greater than 0: ";
cin>> integer;
} while(integer !=1);
return 0;
}
【问题讨论】:
-
如果你只有一组“输入数字”,那就是
do {输入数字,会更干净,如果不好就抱怨} while (不是1);。但是,如果您想让它按原样工作,请准确解释它是如何不工作的。见How to Ask。 -
您输入的是负数吗?请注意,
unsigned int不能存储负值。在this question 中讨论了cin在为unsigned输入负数时是否应该失败。 -
integer是unsigned int,这意味着它不能有负值。因此,如果您尝试给它一个负值,它将“环绕”并获得一个正值。如果你想要负值,你需要使用int integer; -
谢谢uneven_mark,这就行了。我将研究该线程以澄清它“失败”的原因。
标签: c++ do-while verification