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

如题所述

意思是输入m n的值,若是m <=0 或者n <0 且输入值不是结束字符或者输入没有错误时,会继续要求输入

实际的意思是输入m n的值,且 m 和n的值要大于0,否则重新输入追问

按照他们三个优先级来看。我把他理解为当输入m n 不等于无效输入并且m<=0,或者n<=0,那么继续输入。但是这样好像又不符合题目的要求。觉得矛盾了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-03-20
这个while循环是为了保证从键盘读数的时候只要读入成功,那么m或者n肯定是都大于0的,否则一直从键盘读数,直到两个都大于0或者读入不成功为止。追问

按照他们三个优先级来看。我把他理解为当输入m n 不等于无效输入并且m<=0,或者n<=0,那么继续输入。但是这样好像又不符合题目的要求

追答

我觉得符合要求啊,如果输入成功,那么scanf返回真,检测m的值,如果m满足小于等于0,直接表达式返回真,如果m不满足,检测n,如果n满足小于等于0,表达式返回真,否则返回假。

第2个回答  2015-03-20
当你输入的不为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));

本回答被网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网