| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1703 人关注过本帖
标题:[求助]有关于自加自减的问题
只看楼主 加入收藏
inku
Rank: 1
等 级:新手上路
帖 子:122
专家分:0
注 册:2006-8-6
收藏
 问题点数:0 回复次数:38 
[求助]有关于自加自减的问题
main()
{ int m=5;
if(m++>5) printf("%d\n",m);
else printf("%d\n",m--);
}
A: 7
B: 6
C: 5
D: 4
答案: B
m++=5所以执行 else printf("%d\n",m--);
m--也是5,怎么答案会是6呢?
搜索更多相关主题的帖子: 答案 
2006-08-22 23:43
cwande
Rank: 2
等 级:新手上路
威 望:3
帖 子:333
专家分:0
注 册:2006-8-18
收藏
得分:0 
以下是引用inku在2006-8-22 23:43:23的发言:
main()
{ int m=5;
if(m++>5) printf("%d\n",m);
else printf("%d\n",m--);
}
A: 7
B: 6
C: 5
D: 4
答案: B
m++=5所以执行 else printf("%d\n",m--);
m--也是5,怎么答案会是6呢?

m++=5,m=6,所以执行 else printf("%d\n",m--); m--=6,m=5;


汗,都懒得写代码了.......... cheat了一个威望,哈.....
2006-08-22 23:46
inku
Rank: 1
等 级:新手上路
帖 子:122
专家分:0
注 册:2006-8-6
收藏
得分:0 
可是m=5,m++=5,不符合if(m++>5)这条语句没有执行过,m就没有变成6,还是5,不知道我哪里错了?
2006-08-23 00:23
cwande
Rank: 2
等 级:新手上路
威 望:3
帖 子:333
专家分:0
注 册:2006-8-18
收藏
得分:0 
以下是引用inku在2006-8-23 0:23:34的发言:
可是m=5,m++=5,不符合if(m++>5)这条语句没有执行过,m就没有变成6,还是5,不知道我哪里错了?

既然已经进行(m++>5)这个判断了,m就等于6了,这有什么问题吗?


汗,都懒得写代码了.......... cheat了一个威望,哈.....
2006-08-23 00:42
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 
if(m>5, m++)  <-----------> if(m++ > 5)

原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-08-23 00:44
inku
Rank: 1
等 级:新手上路
帖 子:122
专家分:0
注 册:2006-8-6
收藏
得分:0 
以下是引用cwande在2006-8-23 0:42:49的发言:

既然已经进行(m++>5)这个判断了,m就等于6了,这有什么问题吗?

我同意前辈说的已经进行(m++>5)这个判断,可是实际上m++>5是不成立的,所以程序不会执行printf("%d\n",m);,所以m就不会等于6

2006-08-23 16:26
ares333
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2006-8-9
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册


m++等于6所以执行上面语句

[此贴子已经被作者于2006-8-23 16:53:45编辑过]


2006-08-23 16:53
wyg4859
Rank: 2
等 级:新手上路
威 望:4
帖 子:883
专家分:0
注 册:2006-8-2
收藏
得分:0 
不是呀,我初学,我的理解是和上面那位大姐给出的公式是一样的,就是if (m++>5)========if (m>5,m++)如果m>5才让m加1,而m>5不满足条件啊,它应该不在进行m++,并且直接执行else后面的语句吧,结果好象应该是4,我知道我的结果是错的,可是我搞不明白呀,希望大家帮帮我,多谢了!

http://www.找到组织!找到党!
2006-08-23 17:36
syh878
Rank: 1
等 级:新手上路
威 望:2
帖 子:461
专家分:0
注 册:2005-9-2
收藏
得分:0 
m++是个过程,结束后m=6

2006-08-23 17:44
nicksharp
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2006-8-4
收藏
得分:0 

我是这么认为的
m++==5>5 不成立 后m值变为6
main()
{ int m=5;
if(m++>5) printf("%d\n",m);// 所以这句不执行
else printf("%d\n",m--);//输出m--的值 因为m的值变为6了 所以输出6
}
把下面的试下就应该知道了
main()
{ int m=5;
if(m>5) printf("%d\n",m);
else printf("%d\n",m--);
}

在和下面的比较下
main()
{ int m=5;
if(m>5) printf("%d\n",m);
else printf("%d\n",--m);
}
这下你应该明白了吧

[此贴子已经被作者于2006-8-23 17:58:59编辑过]

2006-08-23 17:56
快速回复:[求助]有关于自加自减的问题
数据加载中...
 
   



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

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