| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 440 人关注过本帖
标题:++i,i--教教我
只看楼主 加入收藏
Ice_clb
Rank: 1
等 级:新手上路
帖 子:108
专家分:6
注 册:2012-12-3
结帖率:70%
收藏
已结贴  问题点数:20 回复次数:7 
++i,i--教教我
    有以下程序,判断程序的输出结果为(   )。
    main()
    {
     int x=0,y=5,z=3;
     while(z-->0&&++x<5)
     y=y-1;
     printf("%d,%d,%d\n",x,y,z);
    }
z--是不是z=z-1?  ++x是不是先输出在+1?  我算出来是0,4,2  答案是 3,2,-1   能教教我怎么算的嘛
2014-03-13 17:09
ljx小子
Rank: 8Rank: 8
来 自:星星
等 级:蝙蝠侠
威 望:2
帖 子:222
专家分:916
注 册:2013-10-7
收藏
得分:0 
z--这个表达式是自减之前的值;++x这个表达式是x自加之后的值。

。。。。。。。。。。。
2014-03-13 17:31
Ice_clb
Rank: 1
等 级:新手上路
帖 子:108
专家分:6
注 册:2012-12-3
收藏
得分:0 
回复 2楼 ljx小子
你能跟我解说依稀吗?
2014-03-13 17:37
Ice_clb
Rank: 1
等 级:新手上路
帖 子:108
专家分:6
注 册:2012-12-3
收藏
得分:0 
回复 3楼 Ice_clb
解说
2014-03-13 17:37
ljx小子
Rank: 8Rank: 8
来 自:星星
等 级:蝙蝠侠
威 望:2
帖 子:222
专家分:916
注 册:2013-10-7
收藏
得分:0 
还有一个循环短路的问题:
int x=0,y=5,z=3;
     while(z-->0&&++x<5)//第一次循环判断3>0(此时z=2)和1<5(x=1)然后。。。。。第三次直到第0>0(z=-1)退出循环因为是&&运算所以前边不满足直接退出(循环短路);所以最后不会执行++x
     y=y-1;

。。。。。。。。。。。
2014-03-13 17:53
porywei
Rank: 2
等 级:论坛游民
帖 子:36
专家分:73
注 册:2014-3-6
收藏
得分:20 
第一次while()的时候,z=3,x=1;y=4;printf(z=2;x=1;y=4)。
第二次while()的时候,z=2,x=2,y=3;printf(z=1;x=2;y=3)。
第三次while()的时候,z=1,x=3,y=2;printf(z=0;x=3;y=2)。
第四次while()的时候,由于z=0不符合条件,所以不进入循环,但仍然执行z--,最后输出的的结果为z=-1;x=3;y=2;

程序员没有女朋友
2014-03-13 18:33
Ice_clb
Rank: 1
等 级:新手上路
帖 子:108
专家分:6
注 册:2012-12-3
收藏
得分:0 
回复 6楼 porywei
为什么第一次while()的时候,z=3,x=1;y=4;printf(z=2;x=1;y=4)。输出的结果不是  z=3,x=1,y=4?  第一次循环不是应该这样吗?
2014-03-14 09:53
porywei
Rank: 2
等 级:论坛游民
帖 子:36
专家分:73
注 册:2014-3-6
收藏
得分:0 
回复 7楼 Ice_clb
因为z--是后置减,while()判断的时候取的是z的本来的值,判断完之后 z就会减1

程序员没有女朋友
2014-03-14 10:04
快速回复:++i,i--教教我
数据加载中...
 
   



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

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