| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1068 人关注过本帖
标题:关于while语句的问题希望各位大侠给点解释
只看楼主 加入收藏
qinbiao
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2010-12-6
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:13 
关于while语句的问题希望各位大侠给点解释
main()
{
    int x=3,y=6,a=0;
    while (x++!=(y-=1))
    {
        a+=1;
        if(y<x)break;
    }
    printf("%d,%d,%d",x,y,a);
}
运行出来结果是 5 4 1
为什么y是4而不是5?a怎么又是1不是3?难道每循环一次(y-=1)都使y的值自减1?a为什么不算+了3次呢
有点不理解 明明循环了3次y的值变了a的值却没变?求解!!!
搜索更多相关主题的帖子: 语句 解释 
2010-12-06 19:53
tfxanxing
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:82
专家分:165
注 册:2010-5-7
收藏
得分:20 
。。。。。
你是初学者吧!!
建议多看看书!!
2010-12-06 19:57
qinbiao
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2010-12-6
收藏
得分:0 
回复 2楼 tfxanxing
就是初学啊 不懂得很多啊
2010-12-06 19:58
、镜花氺月
Rank: 2
等 级:论坛游民
帖 子:71
专家分:18
注 册:2010-11-5
收藏
得分:0 
main()
{
    int x=3,y=6,a=0;
    while (x++!=(y-=1))     //到此处时x+1,y-1
    {
        a+=1;               
        if(y<x)break;
    }
    printf("%d,%d,%d",x,y,a);
}




while又称当行循环,循环第一次时.x=4,y=5.a=1.到第二次时循环不满足. 已经跳出循环了. 所以只循环了一次.

[ 本帖最后由 、镜花氺月 于 2010-12-6 20:52 编辑 ]
2010-12-06 20:49
freedgun
Rank: 5Rank: 5
等 级:职业侠客
帖 子:147
专家分:302
注 册:2010-11-11
收藏
得分:0 
条件语句不是 x>y,就输出值吗?  a+=1等于a=a+1

有什么样的付出,就有什么样的收获!!
2010-12-06 20:57
qinbiao
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2010-12-6
收藏
得分:0 
实际运行结果就是x=5 y=4 a=1
while(x++!=(y-=1))时第一次判断时实际上就是while(3++!=5)就是3和5判断成立执行a+=1
第二次判断由于x++  x=4, y初值变成5了y-=1就变成y=4 就是4和4判断 判断条件为假不成立 不执行a+=1所以a直到循环结束还是1
对于if语句x>y输出值 到第二次循环结束 y-=1和y--概念不一样所以还是y=4 第二次循环虽然不成立但是x++却还是自增了2次
所以判定if的时候就是x=5和y=4判定成立输出了x=5 y=4 a=1这样的值
我刚开始学 不知道这么理解是否正确
2010-12-06 21:20
jkf2012
Rank: 2
等 级:论坛游民
帖 子:18
专家分:30
注 册:2010-11-18
收藏
得分:0 
你的问题集中在第三次循环条件判断上
你这个程序执行了一次循环和二次循环条件判断
                                              第一次循环                第二次循环
X=3,Y=6,A=0  ------   X=4,Y=5,A=1 ------- X=5,Y=4,A=1
在C中有一个顺序点的概念,也就是在 “;”或"一个判断条件"结束后所有的运算都结束,包括++ --,所以    while (x++!=(y-=1))      在第三次循环条件判断时候X执行了++运算 从4变成5 ,而Y也执行了  Y-=1 的运算由5变成了4,而由于判断条件不成立  所以第三次循环不执行,所以A还是1,不知到明白了吗?


[ 本帖最后由 jkf2012 于 2010-12-6 22:21 编辑 ]
2010-12-06 21:48
qinbiao
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2010-12-6
收藏
得分:0 
回复 6楼 qinbiao
请问 怎么是2次循环 3次循环条件判断?
我觉得是1次循环2次循环条件判断
如果是2次循环a+=1; 就执行了2次就应该是2了吧
2010-12-06 22:08
qinbiao
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2010-12-6
收藏
得分:0 
回复 7楼 jkf2012
请问 怎么是2次循环 3次循环条件判断?
我觉得是1次循环2次循环条件判断
如果是2次循环a+=1; 就执行了2次就应该是2了吧
2010-12-06 22:10
jkf2012
Rank: 2
等 级:论坛游民
帖 子:18
专家分:30
注 册:2010-11-18
收藏
得分:0 
恩对
我打错了
不好意思  已经改正了
2010-12-06 22:21
快速回复:关于while语句的问题希望各位大侠给点解释
数据加载中...
 
   



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

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