鱼C论坛

 找回密码
 立即注册
查看: 4022|回复: 12

谁能帮我看下哪里出错了

[复制链接]
发表于 2013-9-10 01:55:46 | 显示全部楼层 |阅读模式
1鱼币
程序是按照书中原样程序输入的,但输出的和书中的不一样,谭诰强的第四版电子书第51页 ,程序有错,还是书上的不对
新手求解!!!!

QQ图片20130910015303.jpg
QQ图片20130910015303.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-9-10 01:58:56 | 显示全部楼层
书中提示q=24,但编译出来却是22,是什么原因??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-9-10 01:59:51 | 显示全部楼层
这一节,小鱼的视频里没有哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-10 07:10:03 | 显示全部楼层
是不这样 , q=(++j)+(++j)+(++j);    q=[(++j)+(++j)]+(++j)  先算前两个 得J=7   7+7=14   j然偶后在加1  所以j=8   14+8=22    但用这种方法就不能得出i=15

看来c编译器是用不同方法处理这两种情况的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-10 08:37:09 | 显示全部楼层
http://bbs.fishc.com/forum.php?m ... hlight=%D7%D4%D4%F6
这种问题不用太纠结
了解++i是先自增再参与运算;i++是先参与运算再自增就足够了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-10 08:48:19 | 显示全部楼层
第个编译器处理这种自加和自减的方式是不同的:
我用的vc的编译器,他处理自加的方式是:
p=(i++)+(i++)+(i++); 先i+i+i=15,把值给P后,再i+1,加三次。
q=(++j)+(++j)+(++j);   首先++j,再++j,得到7,7+7=14,然后,再++j,得到j为8,再14+8=22;

不同的编译器,不同的算法,所以,这种自加自减除非是你对当前你用的编译器算法特别了解,否则不建议这么写。要不然,你的代码,放到另一个人那里,得到的值又不同了。所以一般经验多点的程序员,是特不喜欢这种写法的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-9-10 10:02:59 | 显示全部楼层
谢谢鱼友们,不过这对对于一个刚学习C语言的人来说,确实有点晕~~~~~:dizzy::dizzy::dizzy:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-10 16:55:52 | 显示全部楼层
跟编译器有关系吧,写代码的时候最好也避免这种情况。了解i++跟++i的区别就好嘞
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-10 19:07:34 | 显示全部楼层
不要纠结这个问题,编译器的问题{:7_174:},
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-11 10:33:57 | 显示全部楼层
编译器底层原理不同,计算顺序不同啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-12 11:55:41 | 显示全部楼层

vc6.0编译器,这个编译器的运算过程是先对前两个进行运算,j=5,第一个++j后j=6,第二个++j后j=7,此时编辑器计算了(++j)+(++j)=7+7=14,接下来还剩下1个++j,最后1个++j后j=8,然后计算14+8=22,所以打印出来的这个是22而不是24。但是如果用vs2010,则会先运算三个++j而不是两个,就会先运算得到j=8,然后8+8+8=24,这是编译器的不同造成的。
我也是刚刚才知道的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-25 10:33:34 | 显示全部楼层
新人,来看学习的,呵呵
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-25 12:19:57 | 显示全部楼层
学习了     谢楼上各位
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-21 19:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表