| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1776 人关注过本帖
标题:while ((status = scanf("%d",&code)) != 1 )
取消只看楼主 加入收藏
Dream_weaver
Rank: 1
等 级:新手上路
帖 子:37
专家分:2
注 册:2012-6-8
结帖率:100%
收藏
 问题点数:0 回复次数:1 
while ((status = scanf("%d",&code)) != 1 )
标题太短,写不完整
请解释以下这个代码的执行过程
while ((status = scanf("%d",&code)) != 1 || (code < 1 || code > 5))
最好以举例的方式,比如当code=1时   当code=6时 此程序的执行过程,谢谢。
搜索更多相关主题的帖子: 最好 status 
2012-08-09 21:23
Dream_weaver
Rank: 1
等 级:新手上路
帖 子:37
专家分:2
注 册:2012-6-8
收藏
得分:0 
回复 楼主 Dream_weaver
我的帖子还是我自己来回复吧,我自己想明白了。
程序是这样的
while((status = scanf("%d",&code)) != 1 || (code < 1 || code > 5))
{循环}

首先要说的是scanf("%d",&code)的返回值是【输入数据与格式字符串匹配的次数】,也就是说这里一定是要输入整型数据才匹配
开始
①当输入为非整型数据时,scanf返回0,status=0,status!=1, 不用管后面的代码了,直接执行循环。

②当输入为整型数据时,例如code=6,scanf返回1,stutas=1,不满足(status = scanf("%d",&code)) != 1 ,
  于是要继续判断第一"||"后面的语句(code < 1 || code > 5),显然code=6是不在1~5之间,满足,执行循环。

③当输入为整型数据时,例如code=1,scanf返回1,stutas=1,不满足(status = scanf("%d",&code)) != 1 ,
  于是要继续判断第一"||"后面的语句(code < 1 || code > 5),显然code=1在1~5之间,不满足,跳出循环。


此外:对于scanf还要详细说一点,即使它可以匹配多次,返回值可以是0,1,2····
      例如scanf("%d %d",&a,&b),输入两个整型数据,则scanf("%d %d",&a,&b) == 2.
2012-08-09 22:46
快速回复:while ((status = scanf("%d",&code)) != 1 )
数据加载中...
 
   



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

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