| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 453 人关注过本帖
标题:请指点:这个程序的正确结果
只看楼主 加入收藏
荒野苍狼
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-3-21
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
请指点:这个程序的正确结果
#include"stdio.h"
main()
{int i=3,j=0;
 j=i++ * ++i + i-- * --i;

 printf("j=%d\n",j);
}

书上给的结果是18我在机器上运行的是25(vc6.0)为什么?
搜索更多相关主题的帖子: include 
2011-03-21 18:07
minand
Rank: 2
等 级:论坛游民
帖 子:71
专家分:89
注 册:2011-3-16
收藏
得分:1 
j=0了 后面那个式子有什么意义
2011-03-21 18:13
刘定邦
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:687
专家分:1570
注 册:2010-9-21
收藏
得分:3 
3*4+3*2=18呀。不过这不同的编译器是有差别的。
2011-03-21 18:17
孤单旋律
Rank: 2
等 级:论坛游民
帖 子:30
专家分:23
注 册:2010-10-22
收藏
得分:3 
i++是先赋值后运算,++i是先运算后赋值,说以答案是3*4+3*2=18!
2011-03-21 18:26
liangjinchao
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:376
专家分:697
注 册:2010-11-8
收藏
得分:3 
同意:18

因为有了因为,所以有了所以,既然已成既然,何必再说何必
2011-03-21 18:30
bccn250
Rank: 5Rank: 5
等 级:职业侠客
帖 子:154
专家分:379
注 册:2010-5-25
收藏
得分:6 
好像是

先 ++i 这时 i==4
然后 因为 i++ 的加一操作是后执行的,所以是先做第一个乘法。也就是 4*4 得到结果 16
然后 --i 这时 i==3
然后 因为 i-- 的减一操作是后执行的,所以是先做第二个乘法。也就是 3*3 得到结果 9
然后是执行加法,16+9 就等于 25了
最后才是 i++ 和 i-- 完后 i==3

这是我的猜想,我想破脑子,只得到这种方法能算出是 25

不知道是不是这样的(VC6.0)

不好意思,刚才弄错了,现在更正。编辑完


[ 本帖最后由 bccn250 于 2011-3-21 19:00 编辑 ]
2011-03-21 18:38
给力芬2010
Rank: 2
等 级:论坛游民
帖 子:48
专家分:71
注 册:2011-3-17
收藏
得分:2 
先加后用  先用后加
2011-03-21 19:07
我是传奇
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:88
专家分:109
注 册:2011-3-21
收藏
得分:2 
i的值在计算的过程中变化了,但是初始值没变
2011-03-22 12:47
快速回复:请指点:这个程序的正确结果
数据加载中...
 
   



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

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