| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 608 人关注过本帖
标题:++n的疑问
只看楼主 加入收藏
qingxin111
Rank: 2
等 级:论坛游民
帖 子:71
专家分:29
注 册:2008-4-10
结帖率:100%
收藏
 问题点数:0 回复次数:7 
++n的疑问
int n=5,m;
m=(++n)*(--n);m怎么等于25???不是++n等于6,--n等于5,5*6=30吗?
搜索更多相关主题的帖子: 疑问 
2008-09-09 15:20
awnucel
Rank: 1
等 级:新手上路
威 望:1
帖 子:68
专家分:0
注 册:2006-12-13
收藏
得分:0 
最简单的说一句,n只是一个变量,同一时刻,只能代表一个值  不可能又是6又是5
2008-09-09 16:12
qingxin111
Rank: 2
等 级:论坛游民
帖 子:71
专家分:29
注 册:2008-4-10
收藏
得分:0 
但这里是++n和--n啊
2008-09-09 16:21
shade1220
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2008-8-5
收藏
得分:0 
[bo][un]qingxin111[/un] 在 2008-9-9 15:20 的发言:[/bo]

int n=5,m;
m=(++n)*(--n);m怎么等于25???不是++n等于6,--n等于5,5*6=30吗?


1.++n执行完后n=6
2.--n执行完后n=5
3.然后是*,正如2楼说的那样,变量n在某一时刻只有一个值,那就是执行2后的n=5;5*5=25

踏踏实实学习,认认真真编程
2008-09-09 16:27
ginowang11
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2008-9-8
收藏
得分:0 
根据优先级*是最后运算的。
++n是个自加表达式,表达式的值是6
--n是个自减表达式,表达式的值是5
所以 ++n*--n 结果就为30 ,但是在调试的时候结果却是25!!!???
2008-09-09 17:58
snakealpha
Rank: 1
来 自:扬州
等 级:新手上路
威 望:1
帖 子:267
专家分:0
注 册:2005-11-5
收藏
得分:0 
回楼上,++--和*的优先级是一样的,详见 C陷阱与缺陷
但是++--是单目运算符,和*放在一起就有点麻烦了...这叫"未定义的行为",几乎所有的书都警告要避免"未定义的行为"
楼上的另外一封贴子不是已经见证了这种混乱与不合理性了吗?认真说,那个帖子里面VC的表现,我也糊涂着呢-_-|||

天涯也有江南信
梅破知春近
夜阑风细得香迟
不道晓来开遍向南枝
2008-09-09 18:10
snakealpha
Rank: 1
来 自:扬州
等 级:新手上路
威 望:1
帖 子:267
专家分:0
注 册:2005-11-5
收藏
得分:0 
对的,标准里面又没说该怎么做,所谓"未定义"的必然结果
...但是,我觉得把这个弄懂都不容易,何遑论以之写代码呢?

天涯也有江南信
梅破知春近
夜阑风细得香迟
不道晓来开遍向南枝
2008-09-09 18:34
快速回复:++n的疑问
数据加载中...
 
   



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

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