免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3105 | 回复: 13
打印 上一主题 下一主题

[C] 【品悟c】疑问3 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-10-14 15:57 |只看该作者 |倒序浏览
126页,第四章问题25。
疑问1:main函数中第三行的int i;
这一行是否是多余了?因为主函数中没有使用到。

疑问2:calculate函数要实现取一个数组所有元素的平均数
void calculate(...float * p_ave)
{
     for(i = 0; i < n; i++)
     {
            *p_ave += array[i];
     }
     p_ave /= n;
}
其中,p_ave是代表平均数,显示利用他临时作为p_sum,然后再自除n,加一个sum变量,是否更明确一些?大家看下谢谢

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
2 [报告]
发表于 2012-10-14 16:02 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
3 [报告]
发表于 2012-10-14 16:07 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
4 [报告]
发表于 2012-10-14 16:10 |只看该作者
好的,谢谢,清楚了,继续拜读。
回复 2# pmerofc


   

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
5 [报告]
发表于 2012-10-14 16:13 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
14
巨蟹座
日期:2013-11-19 14:09:4615-16赛季CBA联赛之青岛
日期:2016-07-05 12:36:0515-16赛季CBA联赛之广东
日期:2016-06-29 11:45:542015亚冠之全北现代
日期:2015-07-22 08:09:472015年辞旧岁徽章
日期:2015-03-03 16:54:15巨蟹座
日期:2014-12-29 08:22:29射手座
日期:2014-12-05 08:20:39狮子座
日期:2014-11-05 12:33:52寅虎
日期:2014-08-13 09:01:31巳蛇
日期:2014-06-16 16:29:52技术图书徽章
日期:2014-04-15 08:44:01天蝎座
日期:2014-03-11 13:06:45
6 [报告]
发表于 2012-10-14 18:27 |只看该作者
zhou_jingzhi 发表于 2012-10-14 15:57
加一个sum变量,是否更明确一些?

都是很明确的,不相伯仲。
用个局部变量的理由是,运行效率高
不需要局部变量的理由是,如今的编译器都能用局部变量来优化
相关的还可以Google一下C的关键字restrict

论坛徽章:
0
7 [报告]
发表于 2012-10-15 10:08 |只看该作者
我喜欢解惑帖子

论坛徽章:
0
8 [报告]
发表于 2012-10-15 11:19 |只看该作者
本帖最后由 asdmonster 于 2012-10-15 11:19 编辑
bruceteen 发表于 2012-10-14 18:27
都是很明确的,不相伯仲。
用个局部变量的理由是,运行效率高
不需要局部变量的理由是,如今的编译器都 ...


这个函数问题大了去了。调用这个函数的人需要遵守的契约是什么?
1,如果调用前*p_ave != 0 呢?
2,如果还有另外一个线程在异步修改*p_ave呢?
3,如果编译器不优化呢?每个加法都做一个  *操作?

这个函数写得不明所以,放在项目里面就是个将来产生bug的源头。

论坛徽章:
0
9 [报告]
发表于 2012-10-15 11:24 |只看该作者
还有两个问题:

1 p_ave可能会溢出

2 int转float可能出现精度损失,有舍入的情况出现

代码的前提一定要写明确了

论坛徽章:
4
天秤座
日期:2013-10-18 13:58:33金牛座
日期:2013-11-28 16:17:01辰龙
日期:2014-01-14 09:54:32戌狗
日期:2014-01-24 09:23:27
10 [报告]
发表于 2012-10-15 11:30 |只看该作者
我记得论坛里经常有人喷 i j k啊。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP