| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1221 人关注过本帖
标题:while循环的一些问题求助
只看楼主 加入收藏
刘定邦
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:687
专家分:1570
注 册:2010-9-21
收藏
得分:2 
这个呀。楼主要好好去看一下程序的流程控制。while()循环默认只控制一个语句。而C语言一个分号; 就是一个语句。是一个空语句。如果你在while();后面加上分号了。那你那个printf();就不属于当循环的语句。不加分号。运行结果为-1没错呀。你想想。当x--到0时。就结束循环了。但是此时x的值还要自减一次。输出来就是-1
2011-05-24 16:58
Qiwan
Rank: 2
来 自:河南
等 级:论坛游民
帖 子:48
专家分:28
注 册:2011-5-15
收藏
得分:0 
回复 10楼 liangjinchao
0是1自减的结果,,1因为满足条件而能继续自减;想不通为什么0还能继续自减了,求更容易理解的解释!!!
2011-05-24 18:17
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
收藏
得分:0 
程序代码:
int x = 2;
while ( x-- )
{
    printf("%d\n", x);
}

最后输出的是1和0

===========================
这是由于在执行这个语句的时候是先判断,后自减而导致的:
也就是说,它会先判断一下是不是等于0,如果不等于0,那么就自减,然后再执行printf语句

从而导致输出的是 1、 0

o(∩∩)Linux & Python 群:187367181
2011-05-24 18:30
Qiwan
Rank: 2
来 自:河南
等 级:论坛游民
帖 子:48
专家分:28
注 册:2011-5-15
收藏
得分:0 
回复 13楼 thlgood
那如果while后加了一人“;”为什么连0也能自减而得到结果为-1了呢??难道加了“;”后变成先自减后判断了??求详解呀```
2011-05-24 18:35
夜叶
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:104
专家分:189
注 册:2011-5-7
收藏
得分:0 
y=x--;等价于y=x;x=x-1;所以运行结果最后是-1。再不理解就看书去吧,书上有解释。
2011-05-24 18:48
熊熊壮壮
Rank: 2
等 级:论坛游民
帖 子:10
专家分:10
注 册:2011-5-9
收藏
得分:0 
同意楼上解释,x--先判断,再执行减,当x=0后循环结束,此时x=0,执行“--”运算,x=-1,然后输出。
2011-05-24 19:01
菜鸟auto
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:58
专家分:100
注 册:2010-7-23
收藏
得分:0 
判断为假  是不再执行while后面的空语句,而表达式x--还是要执行的
2011-05-24 19:54
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
收藏
得分:4 
回复 14楼 Qiwan
假如while后面有分号??
这个很好理解!!
=============================
int x = 2;
while ( x-- );
printf("%d", x);

当x的初始值大于0的时候,不管x等于几,到最后,输出的都是 -1
==========================================================
因为,while后面有一个分号,相当于while 后面接一个空语句。
当x = 100 时,执行while (x--)之后,x = 99;
然后绕回去,x = 99 再执行 while (x--)之后 x = 98;
……
当x = 0时,执行while (x--)之后,循环结束, x = -1
所以最后输出 -1

就这么简单!!

================================================

o(∩∩)Linux & Python 群:187367181
2011-05-24 20:24
zhailiubo
Rank: 1
等 级:新手上路
帖 子:10
专家分:7
注 册:2011-5-24
收藏
得分:0 
这问题有点意思。
2011-05-24 20:51
zhailiubo
Rank: 1
等 级:新手上路
帖 子:10
专家分:7
注 册:2011-5-24
收藏
得分:2 
楼主,你看看,是不是这样。
x=2,然后进行while循环
第一次while(2--);相当于while(2);为真,继续执行,但此时x=1
第二次while(1--);相当于while(1);为真,继续执行,但此时x=0
第三次while(0--);相当于while(0);为假,跳出循环,但但此时x=-1
然后输出x的值为-1。.
2011-05-24 20:58
快速回复:while循环的一些问题求助
数据加载中...
 
   



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

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