标题:整型ID,while(!(cin>>ID||isalpha(ID)))对正确和错误的输入的判断过程,请 ...
只看楼主
wengbin
Rank: 10Rank: 10Rank: 10
来 自:陕西西安
等 级:贵宾
威 望:19
帖 子:370
专家分:1846
注 册:2015-5-8
结帖率:100%
已结贴  问题点数:20 回复次数:2 
整型ID,while(!(cin>>ID||isalpha(ID)))对正确和错误的输入的判断过程,请能人详细说一下
int ID;
while(!(cin>>ID||isalpha(ID)))//原来意图是如果输入错误或输入不是数字则重新输入,那么跳出循环的条件应该是while(!(cin>>ID&&isalnum(ID))),为什么我用while(!(cin>>ID||isalpha(ID)))也能行呢?
{
}
2016-03-04 11:06
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:20 
对于 cin>>ID || isalpha(ID)
如果 cin>>ID 失败,就会执行 isalpha(ID),但cin>>ID时,ID的值是无意义的,怎么可以用它isalpha(ID)?
2016-03-04 12:08
wengbin
Rank: 10Rank: 10Rank: 10
来 自:陕西西安
等 级:贵宾
威 望:19
帖 子:370
专家分:1846
注 册:2015-5-8
得分:0 
回复 2楼 rjsp
的确是这样的,cin>>ID失败后ID的值应该是个随机数字,我写代码时没仔细思考,运行了下竟然没什么问题,这才来问问,经您一提醒我明白过来,当cin失败后ID应该是个随机数字(今天试了好像都会是0,可能是C++编译器就是这么干的?),这就导致了两个条件都为假,也顺利的循环下去了......

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

2016-03-04 17:55



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-462137-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.077908 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved