| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 438 人关注过本帖
标题:自学新手,很多不懂的地方,望大家不吝赐教!
只看楼主 加入收藏
沧浪之水k
Rank: 1
等 级:新手上路
帖 子:11
专家分:7
注 册:2012-10-29
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:6 
自学新手,很多不懂的地方,望大家不吝赐教!
有以下程序:
#include <stdio.h>
main()
{
  int x=2;
  while(x--);
  printf("%d\n",x);
}
为什么结果是-1?详细点,谢谢!!
搜索更多相关主题的帖子: 自学 include 
2012-11-07 11:16
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:3 
你这个程序无论输出什么都没有意义,以为程序本身就是错的,while()语句的括号内需要的是一个逻辑值,而这个值只有0和非零两种可能,包括while(x>y)这种形式其实while需要的也是逻辑的0或者非0(!0),只不过while(x>y)这种形式是先判断x>y是否成立,如成立则返回值为非0,如不成立则返回0,也就是说if,while等语句真正需要的只是一个逻辑的0或者非0而已.
再看你写的程序while(x--);在这个循环里想为2,然后自减运算,又因为减号在x后面,所以先取值后自减,那么经过两次循环后学的值为0了,这个时候这个时候才会跳出while循环,而在跳出是x还会进行一次自减运算,也就是说跳出循环后学的值是-1,所以输出x的只是-1.
另外你要注意,你的while()后面有个分号,这样while的循环体变成了空语句也就是什么也不做。所以只输出了一个-1.
友情提示:基础很重,要打牢基础。
本人新手,说错勿怪。。。。。。。。。。。。
阿弥陀佛。。。。。
 

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-11-07 11:37
梁朝斌
Rank: 4
等 级:业余侠客
帖 子:192
专家分:288
注 册:2012-10-21
收藏
得分:3 
你自己跟踪调试一下,x=2,x=1,x=0,x=-1,结果返回-1,程序终止了,输出x=-1

菜鸟也疯狂
2012-11-07 11:39
Amycoa
Rank: 2
等 级:论坛游民
帖 子:18
专家分:56
注 册:2012-10-27
收藏
得分:4 
1> x=2  while执行空语句后  x=1
2> x=1  while执行空语句后  x=0
3> x=0  while不执行空语句,跳出循环  x=-1
4> 输出x的值  

(零为假,非零为真)

[ 本帖最后由 Amycoa 于 2012-11-7 11:52 编辑 ]

C/ASM ReGo ! .. ...Amy.Coa
2012-11-07 11:51
沧浪之水k
Rank: 1
等 级:新手上路
帖 子:11
专家分:7
注 册:2012-10-29
收藏
得分:0 
回复 4楼 Amycoa
明白了,谢谢!
2012-11-07 18:14
沧浪之水k
Rank: 1
等 级:新手上路
帖 子:11
专家分:7
注 册:2012-10-29
收藏
得分:0 
回复 2楼 yaobao
程序本身没有问题,已经知道为什么了,谢谢
2012-11-07 18:16
沧浪之水k
Rank: 1
等 级:新手上路
帖 子:11
专家分:7
注 册:2012-10-29
收藏
得分:0 
回复 3楼 梁朝斌
好的,谢谢
2012-11-07 18:17
快速回复:自学新手,很多不懂的地方,望大家不吝赐教!
数据加载中...
 
   



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

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