注册 登录
编程论坛 C++教室

整型ID,while(!(cin>>ID||isalpha(ID)))对正确和错误的输入的判断过程,请能人详细说一下

wengbin 发布于 2016-03-04 11:06, 2351 次点击
int ID;
while(!(cin>>ID||isalpha(ID)))//原来意图是如果输入错误或输入不是数字则重新输入,那么跳出循环的条件应该是while(!(cin>>ID&&isalnum(ID))),为什么我用while(!(cin>>ID||isalpha(ID)))也能行呢?
{
}
2 回复
#2
rjsp2016-03-04 12:08
对于 cin>>ID || isalpha(ID)
如果 cin>>ID 失败,就会执行 isalpha(ID),但cin>>ID时,ID的值是无意义的,怎么可以用它isalpha(ID)?
#3
wengbin2016-03-04 17:55
回复 2楼 rjsp
的确是这样的,cin>>ID失败后ID的值应该是个随机数字,我写代码时没仔细思考,运行了下竟然没什么问题,这才来问问,经您一提醒我明白过来,当cin失败后ID应该是个随机数字(今天试了好像都会是0,可能是C++编译器就是这么干的?),这就导致了两个条件都为假,也顺利的循环下去了......

[此贴子已经被作者于2016-3-4 17:58编辑过]

1