| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 886 人关注过本帖
标题:[求助]请问这两个小程序为什么有这样的运行结果?
只看楼主 加入收藏
kaid
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-12-25
收藏
 问题点数:0 回复次数:10 
[求助]请问这两个小程序为什么有这样的运行结果?

/* Note:Your choice is C IDE */
#include "stdio.h"
main()
{
int x=2;
while(x--);
printf("%d\n",x);

}
结果-1






/* Note:Your choice is C IDE */
#include "stdio.h"
main()
{
int k,n,m;
n=10;m=1;k=1;
while(k++<=n)
m*=2;
printf("%d\n",m);

}

结果1024

搜索更多相关主题的帖子: 运行 结果 
2007-01-06 11:03
渚薰
Rank: 6Rank: 6
等 级:贵宾
威 望:22
帖 子:1132
专家分:0
注 册:2006-8-6
收藏
得分:0 
第一个:
main()
{
int x=2; //x的初始值为2
while(x--);
/*注意,这个while后有个分号,即表明,这个while循环体是空语句,这里检查x,逻辑表达式中,c语言认为非0就是真,所以,x一直递减,当x=0时,退出这个while循环,此时由于x--是后减操作,所以x继续减1,最后得到-1*/
printf("%d\n",x);

}

程序步骤
次数 x while判断 x的操作
1 2 true x--
2 1 true x--
3 0 false x--
4 -1 打印x


第二个:
/* Note:Your choice is C IDE */
#include "stdio.h"
main()
{
int k,n,m;
n=10;m=1;k=1;
while(k++<=n) //k++是后加操作,所以这个循环一共执行10次,相当于for(k=1;k<=n;k++),最后就是2^10
m*=2;
printf("%d\n",m);

}


个人ajax技术专题站: " target="_blank">http://www. 我不会闲你烦,只会闲你不够烦!
2007-01-06 11:13
zbqf109
Rank: 1
等 级:新手上路
帖 子:289
专家分:0
注 册:2006-12-31
收藏
得分:0 
以下是引用kaid在2007-1-6 11:03:47的发言:

/* Note:Your choice is C IDE */
#include "stdio.h"
main()
{
int x=2;
while(x--); /*相当于while(x) x--;*/
printf("%d\n",x);

}
结果-1






/* Note:Your choice is C IDE */
#include "stdio.h"
main()
{
int k,n,m;
n=10;m=1;k=1;
while(k++<=n) /*同上,这两行代码相当于while(k<=n){k++;m*=2;}*/
m*=2;
printf("%d\n",m);

}

结果1024


坚决不跟用TC的人打交道!
2007-01-06 11:16
kaid
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-12-25
收藏
得分:0 
haha,原来加了个分号就变成了空语句,不为零就变成了真,看来2进制的机器还是挺兼容23456。。的吧~~

感谢各位这么迅速就作出了有效的解释
2007-01-06 11:41
yupeng
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2006-12-28
收藏
得分:0 
没有必要分析的这么详细

理解 *高效* 自信
2007-01-06 16:50
神秘失恋
Rank: 1
等 级:新手上路
帖 子:663
专家分:0
注 册:2007-1-6
收藏
得分:0 
2楼真详细...

上帝之手.........
2007-01-06 16:58
yuyunliuhen
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:1435
专家分:0
注 册:2005-12-12
收藏
得分:0 
精神可嘉

Go confidently in the  directions of your dreams,live the life you have imagined!Just do it!
It is no use learning without thinking!
2007-01-06 17:32
hjingya
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2006-12-6
收藏
得分:0 
还是有些不明白,k跟m有什么关系呢,k自加,但变量m不一直没有变化吗?那k跟m又没关系,怎么会出现结果1024的呢,还望帮助!

2007-01-07 01:06
SuperStar515
Rank: 1
等 级:新手上路
帖 子:137
专家分:0
注 册:2006-12-24
收藏
得分:0 

m*=2表示m自乘2所得值赋予m,即m=m*2


喜欢等待,因为等待是一门需要花费一生才能读懂的艺术。等待。。。
2007-01-07 01:18
hjingya
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2006-12-6
收藏
得分:0 
楼上说的没错,但k跟m有什么关系呢,为何结果是1024,能不能把过程说一下?

2007-01-07 01:43
快速回复:[求助]请问这两个小程序为什么有这样的运行结果?
数据加载中...
 
   



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

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