|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 下面有段程序,不太懂结果怎么算来的
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
966
人关注过本帖
标题:
下面有段程序,不太懂结果怎么算来的
只看楼主
加入收藏
luguolian
等 级:
新手上路
帖 子: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
等 级:
贵宾
威 望:
24
帖 子:1676
专家分:7295
注 册:2011-6-30
第
2
楼
收藏
得分: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
来 自:黑龙江
等 级:
论坛游民
帖 子:129
专家分:92
注 册:2010-9-9
第
3
楼
收藏
得分:0
因为你这个的while下没有语句。你的while后面有分号。
当x=0时,while结束循环(while之后的语句x为-1),执行printf。此时的x值为-1。应该是这样的!
学习~
2013-07-28 09:18
举报帖子
使用道具
赠送鲜花
rjvsky
来 自:陕西西安
等 级:
论坛游侠
帖 子:77
专家分:106
注 册:2012-3-6
第
4
楼
收藏
得分:0
此程序的输出结果恒为-1;因为当程序为零时跳出while循环,但此时执行滞后自减,也就是对零减一,输出该值,所以输出结果恒为-1,不论你的i为何止,除非你i的初值是小于零的此时的结果就不为-1!!
企业需要的人才,是真正可以给他们带来经济效益的人,而不是一大堆没用的证书,看淡证书,强化自己···
2013-07-28 12:55
举报帖子
使用道具
赠送鲜花
guhemeng
等 级:
论坛游侠
威 望:
1
帖 子:100
专家分:165
注 册:2013-7-27
第
5
楼
收藏
得分:0
顶二楼
你把分号去掉玩一下,就知道啥子意思了!
很多东东,可以随便试验,错了改就是了,又不会把你电脑怎么样!这样的问题搬到这个地方来问,也只有我这种新手才会回复你,大神估计会开骂
2013-07-28 13:32
举报帖子
使用道具
赠送鲜花
艺术的生活
等 级:
论坛游民
帖 子:51
专家分:77
注 册:2013-7-28
第
6
楼
收藏
得分: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
举报帖子
使用道具
赠送鲜花
天楚
来 自:楚地
等 级:
小飞侠
帖 子:550
专家分:2113
注 册:2013-3-14
第
7
楼
收藏
得分:0
回复 5楼 guhemeng
不管怎么样,有问题问绝对是好的,没有弱智的问题,这个只是相对的,如果人人都这样子怕自己问的很低级,那论坛拿来干嘛!不管别人问的好不好,你会就帮忙解释一下,不会可以一起讨论。每个人都有新手的时候。
没有哪条路好走,选择了,就坚持下去~~~~
2013-07-28 14:56
举报帖子
使用道具
赠送鲜花
天楚
来 自:楚地
等 级:
小飞侠
帖 子:550
专家分:2113
注 册:2013-3-14
第
8
楼
收藏
得分:0
这个,在while循环结束后,还会自减一次。可以自己试试把while循环后面的";"去掉,你就知道这个过程
没有哪条路好走,选择了,就坚持下去~~~~
2013-07-28 14:59
举报帖子
使用道具
赠送鲜花
小小程序猿
等 级:
小飞侠
威 望:
1
帖 子:755
专家分:2785
注 册:2013-7-18
第
9
楼
收藏
得分: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
等 级:
论坛游民
帖 子:7
专家分:13
注 册:2013-7-27
第
10
楼
收藏
得分:0
x--与--x执行过程不同
x--执行过程是把x值先赋给别的变量,也就是先用x的值进行计算,就如在while(x--)中先判断x=2,循环条件成立然后在执行减1,所以输出为1。
--x则先做减法再进行赋值判断,LZK可以试试。
2013-07-29 01:11
举报帖子
使用道具
赠送鲜花
12
1/2页
1
2
快速回复:
下面有段程序,不太懂结果怎么算来的
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.017174 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved