免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: see_3000
打印 上一主题 下一主题

[C] 【实时更新】2009.07.31传说中最好的linux c入门教材---Linux C编程一站式学习.pdf [复制链接]

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
1 [报告]
发表于 2009-12-11 00:23 |显示全部楼层
看了下目录和前言
作者懂行
写得也很用心
这书比老谭错误千出的垃圾强千万倍
作者何必在前言中提老谭呢
建议去掉,免得自贬身份
另外你把老谭和K&R放在一起也不合适
不客气地说
简直是一种亵渎
出于对本书的爱护
强烈建议作者就别提哪个垃圾作者了
“安能以身之察察,受物之汶汶者乎?”

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
2 [报告]
发表于 2010-03-28 10:12 |显示全部楼层
本帖最后由 pmerofc 于 2010-03-28 10:22 编辑

即使实参没有Side Effect,使用函数式宏定义也往往会导致较低的代码执行效率。下面举一个极端的例子,也是个很有意思的例子。

例 21.1. 函数式宏定义

#define MAX(a, b) ((a)>(b)?(a)b))

int a[] = { 9, 3, 5, 2, 1, 0, 8, 7, 6, 4 };

int max(int n)
{
        return n == 0 ? a[0] : MAX(a[n], max(n-1));
}

int main(void)
{
        max(9);
        return 0;
}



这段代码从一个数组中找出最大的数,如果MAX是个真正的函数,这个算法就是从前到后遍历一遍数组,时间复杂度是Θ(n),而现在MAX是这样一个函数式宏定义,思考一下这个算法的时间复杂度是多少?

引自 http://learn.akae.cn/media/ch21s02.html

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
3 [报告]
发表于 2010-03-28 10:13 |显示全部楼层
本帖最后由 pmerofc 于 2010-03-28 10:22 编辑

LN pmerofc@126.com
2010-01-25 23:37:01

例 21.1. 函数式宏定义
用来说明宏“往往会导致较低的代码执行效率”我觉得没有说服力。
因为那段代码效率低并非是由于宏而是因为算法,那段代码用递归函数写同样效率低。

引自 http://learn.akae.cn/akabook/ch21s02_2

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
4 [报告]
发表于 2010-03-28 10:14 |显示全部楼层
本帖最后由 pmerofc 于 2010-03-28 10:23 编辑

宋劲杉 songjinshan@gmail.com
2010-03-02 20:48:53

下面有一个思考题你大概没仔细想:“如果MAX是个真正的函数,这个算法就是从前到后遍历一遍数组,时间复杂度是Θ(n),而现在MAX是这样一个函数式宏定义,思考一下这个算法的时间复杂度是多少?”

引自http://learn.akae.cn/akabook/ch21s02_2

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
5 [报告]
发表于 2010-03-28 10:19 |显示全部楼层
我个人认为这个例子是不恰当和不公平的(对于宏)
这不是由于宏导致的低效率
而是选择的算法不恰当造成的

把这说成宏的效率低是不对的
事实上很多情况下正是为了效率才使用宏
不能选择一个糟糕的效率很低的写法,然后在里面使用宏,就说宏很糟糕效率很低

看来作者不能接受
我想听听其他网友的看法

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
6 [报告]
发表于 2012-07-01 10:12 |显示全部楼层
宋劲杉搞了一个群
非常讨厌
成天往我这发垃圾邮件
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP