| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 966 人关注过本帖
标题:下面有段程序,不太懂结果怎么算来的
只看楼主 加入收藏
luguolian
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2013-4-15
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:11 
下面有段程序,不太懂结果怎么算来的
#include<stdio.h>
void main()
{
    int x=2;                 不懂,为什么结果是-1。主要是while里面那个表达式的意思不懂(应该不是自减那么简单吧?)
    while(x--);
    printf("%d\n",x);
}
搜索更多相关主题的帖子: 表达式 
2013-07-28 08:23
qunxingw
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:24
帖 子:1676
专家分:7295
注 册:2011-6-30
收藏
得分:0 
以下是引用luguolian在2013-7-28 08:23:19的发言:

#include
void main()
{
    int x=2;                 不懂,为什么结果是-1。主要是while里面那个表达式的意思不懂(应该不是自减那么简单吧?)
    while(x--);
    printf("%d\n",x);
}
while(x--)//;   这样是不是你要的

www.qunxingw.wang
2013-07-28 08:44
vvvevvv
Rank: 2
来 自:黑龙江
等 级:论坛游民
帖 子:129
专家分:92
注 册:2010-9-9
收藏
得分:0 
因为你这个的while下没有语句。你的while后面有分号。  当x=0时,while结束循环(while之后的语句x为-1),执行printf。此时的x值为-1。应该是这样的!

学习~
2013-07-28 09:18
rjvsky
Rank: 3Rank: 3
来 自:陕西西安
等 级:论坛游侠
帖 子:77
专家分:106
注 册:2012-3-6
收藏
得分:0 
此程序的输出结果恒为-1;因为当程序为零时跳出while循环,但此时执行滞后自减,也就是对零减一,输出该值,所以输出结果恒为-1,不论你的i为何止,除非你i的初值是小于零的此时的结果就不为-1!!

企业需要的人才,是真正可以给他们带来经济效益的人,而不是一大堆没用的证书,看淡证书,强化自己···
2013-07-28 12:55
guhemeng
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:100
专家分:165
注 册:2013-7-27
收藏
得分:0 
   顶二楼

你把分号去掉玩一下,就知道啥子意思了!   很多东东,可以随便试验,错了改就是了,又不会把你电脑怎么样!这样的问题搬到这个地方来问,也只有我这种新手才会回复你,大神估计会开骂     

2013-07-28 13:32
艺术的生活
Rank: 2
等 级:论坛游民
帖 子:51
专家分:77
注 册:2013-7-28
收藏
得分:5 
while(x--);因为后面有分号,也就是它的循环体为空,就等价于
while(x--)
{
};
只对x的值做判断,然后什么都不执行。
我们知道,while后面的循环体要执行,必须是while(条件)中的条件为真。我们来看x--.(C语言中非0为真,0为假)
X--是先取X的值,然后自减。
1.X=2,X--为1
2.X=1,x--为0
3x=0,x--为-1,此时循环结束。
当然X=-1啦。
2013-07-28 14:03
天楚
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:楚地
等 级:小飞侠
帖 子:550
专家分:2113
注 册:2013-3-14
收藏
得分:0 
回复 5楼 guhemeng
不管怎么样,有问题问绝对是好的,没有弱智的问题,这个只是相对的,如果人人都这样子怕自己问的很低级,那论坛拿来干嘛!不管别人问的好不好,你会就帮忙解释一下,不会可以一起讨论。每个人都有新手的时候。

没有哪条路好走,选择了,就坚持下去~~~~
2013-07-28 14:56
天楚
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:楚地
等 级:小飞侠
帖 子:550
专家分:2113
注 册:2013-3-14
收藏
得分:0 
这个,在while循环结束后,还会自减一次。可以自己试试把while循环后面的";"去掉,你就知道这个过程

没有哪条路好走,选择了,就坚持下去~~~~
2013-07-28 14:59
小小程序猿
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:1
帖 子:755
专家分:2785
注 册:2013-7-18
收藏
得分:5 
因为while(i--);最后有分号,所以,只有执行完while才能执行下一条语句;
首先执行  while 语句,就像六楼所说的
    while(i--);
  相当于
  while(i--)
{
};判断结束时(i--)整体等于0
while语句后i=-1;
调试一下下面的代码,也许你会有所收获

#include<stdio.h>
void main()
{ int x=2;               
    while(x--)
    {
        printf("%d\n",x);
    }
    printf("%d\n",x);
}



语言组织能力有限不知道你懂没懂

[ 本帖最后由 小小程序猿 于 2013-7-28 16:59 编辑 ]

孤独与寂寞是催化一个人迅速成长的良药,没有之一
2013-07-28 16:57
mynameCX
Rank: 2
等 级:论坛游民
帖 子:7
专家分:13
注 册:2013-7-27
收藏
得分:0 
x--与--x执行过程不同
x--执行过程是把x值先赋给别的变量,也就是先用x的值进行计算,就如在while(x--)中先判断x=2,循环条件成立然后在执行减1,所以输出为1。
--x则先做减法再进行赋值判断,LZK可以试试。
2013-07-29 01:11
快速回复:下面有段程序,不太懂结果怎么算来的
数据加载中...
 
   



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

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