C语言中 while(scanf("%d%d",&m,&n)!=EOF&&m<=0||n<=0);是什么意思?

 我来答
garfieldonly
2015-03-20 · TA获得超过335个赞
知道小有建树答主
回答量:279
采纳率:66%
帮助的人:116万
展开全部
意思是输入m n的值,若是m <=0 或者n <0 且输入值不是结束字符或者输入没有错误时,会继续要求输入

实际的意思是输入m n的值,且 m 和n的值要大于0,否则重新输入
追问
按照他们三个优先级来看。我把他理解为当输入m n 不等于无效输入并且m<=0,或者n<=0,那么继续输入。但是这样好像又不符合题目的要求。觉得矛盾了
阔气克克
2015-03-20 · TA获得超过485个赞
知道小有建树答主
回答量:527
采纳率:0%
帮助的人:468万
展开全部
这个while循环是为了保证从键盘读数的时候只要读入成功,那么m或者n肯定是都大于0的,否则一直从键盘读数,直到两个都大于0或者读入不成功为止。
追问
按照他们三个优先级来看。我把他理解为当输入m n 不等于无效输入并且m<=0,或者n<=0,那么继续输入。但是这样好像又不符合题目的要求
追答
我觉得符合要求啊,如果输入成功,那么scanf返回真,检测m的值,如果m满足小于等于0,直接表达式返回真,如果m不满足,检测n,如果n满足小于等于0,表达式返回真,否则返回假。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友a1e0e9c
2015-03-20 · TA获得超过146个赞
知道小有建树答主
回答量:89
采纳率:0%
帮助的人:108万
展开全部
当你输入的不为Ctrl+Z,并且m或n的值小于等于0时你可以继续输入m和n的值。可以保证你输入的m和n都是大于0,才继续下一步。
在控制台要输入eof的话 按ALT+65535也可以了
追问
运算顺序是这样的吗?
while( (scanf("%d%d",&m,&n)!=EOF&&m<=0) ||n<=0);
追答
应该这么写
while( scanf("%d%d",&m,&n)!=EOF && (m<=0 || n<=0));
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式