前 言

C陷阱与缺陷
对于经验丰富的行家而言,得心应手的工具在初学时的困难程度往往要超过那些容易上手的工具。刚刚接触飞机驾驶的学员,初航时总是谨小慎微,只敢沿着海岸线来回飞行,等他们稍有经验就会明白这样的飞行其实是一件多么轻松的事。初学骑自行车的新手,可能觉得后轮两侧的辅助轮很有帮助,但一旦熟练过后,就会发现它们很是碍手碍脚。

这种情况对程序设计语言也是一样。任何一种程序设计语言,总存在一些语言特性,很可能会给还没有完全熟悉它们的人带来麻烦。令人吃惊的是,这些特性虽然因程序设计语言的不同而异,但对于特定的一种语言,几乎每个程序员都是在同样的一些特性上犯过错误、吃过苦头!因此,作者也就萌生了将这些程序员易犯错误的特性加以收集、整理的最初念头。

我第一次尝试收集这类问题是在1977年。当时,在华盛顿特区举行的一次SHARE(IBM 大型机用户组)会议上,我作了一次题为“PL/I中的问题与‘陷阱’”的发言。作此发言时,我刚从哥伦比亚大学调至AT&T的贝尔实验室,在哥伦比亚大学我们主要的开发语言是PL/I,而贝尔实验室中主要的开发语言却是C。在贝尔实验室工作的10年间,我积累了丰富的经验,深谙C程序员(也包括我本人)在开发时如果一知半解将会遇到多少麻烦。

1985年,我开始收集有关C语言的此类问题,并在年底将结果整理后作为一篇内部论文发表。这篇论文所引发的回应却大大出乎我的意料,共有2 000多人向贝尔实验室的图书馆索取该论文的副本!我由此确信有必要将该论文的内容进一步扩充,于是就写成了现在读者所看到的这本书。

本书是什么
本书力图通过揭示一般程序员,甚至是经验老道的职业程序员,如何在编程中犯错误、摔跟头,以提倡和鼓励预防性的程序设计。这些错误实际上一旦被程序员真正认识和理解,并不难避免。因此,本书阐述的重点不是一般原则,而是一个个具体的例子。

如果你是一个程序员并且开发中真正用到C语言来解决复杂问题,这本书应该成为你的案头必备书籍。即使你已经是一个C语言的专家级程序员,仍然有必要拥有这本书,很多读过本书早期手稿的专业C程序员常常感叹:“就在上星期我还遇到这样一个Bug!”如果你正在教授C语言课程,本书毫无疑问应该成为你向学生推荐的首选补充阅读材料。

目 录

第0章 导读
第1章 词法“陷阱”
1.1 =不同于==
1.2 &和 | 不同于&&和 ||
1.3 词法分析中的“贪心法”
1.4 整型常量
1.5 字符与字符串
第2章 语法“陷阱”
第3章 语义“陷阱”
第4章 连接
第5章 库函数
第6章 预处理器
第7章 可移植性缺陷
第8章 建议与答案
附录A PRINTF,VARARGS与STDARG
附录B Koenig和Moo夫妇访谈

《C陷阱与缺陷》一导读相关推荐

  1. 《用户体验设计 本质、策略与经验》一2 设计师

    本节书摘来自异步社区<用户体验设计 本质.策略与经验>一书中的第2章,第2.1节,作者[美]Robert Hoekman Jr.,更多章节内容可以访问云栖社区"异步社区" ...

  2. 《用户体验设计 本质、策略与经验》一导读

    目 录 1 简介 2 设计师 3 适应 4 理解 5 质疑 6 交流 7 劝说 8 领导 9 学习 10 不讲理

  3. 2018年用户体验设计的10个趋势

    设计和体验从未像现在这么重要.在过去的10年当中,设计不断适应着用户的新需求,发生了翻天覆地的变化.虽然我们不大可能预测太远的未来,但是我们仍然可以对明年的设计趋势有一个基本的猜测.今天的文章,我们将 ...

  4. 4点,从今天谈用户体验设计经验京东亚马逊购物

    4点意见.从今天在京东和亚马逊的购物体验谈用户体验设计 导读: 今天,想给自己买一款笔记本,货比三家.打开京东和亚马逊的首页.搜索"笔记本",在对照和购买的过程中,我有明显不同的感 ...

  5. 精美网页设计案例_用户体验设计的精美艺术

    精美网页设计案例 There are interactive experiences that simply blow you away. You know it's been a positive ...

  6. 实现线程哪种方法更好_实施数据以实现更好的用户体验设计的4种方法

    实现线程哪种方法更好 Gone are the days when design used to rely mainly on the color palettes and the creativit ...

  7. 面向对象的用户体验设计(持续更新10.29)

    注:本文为原创产品设计译文,由于原文较长,预计分为5次完成.首发PMCAFF,转载请私信,感谢捧场,欢迎交流,谢谢~ 原文:Object-Oriented UX 2012年6月,我在CNN.com工作 ...

  8. 用户体验设计和精益设计的平衡之道

    对你而言那个更重要:是制作出拥有杀手级用户体验的产品来吸引用户?还是尽快制作出能满足用户的产品并抢占大量的市场份额? 假设一款产品用户体验非常差的话,用户不会使用它,但假设作为市场上的先入者,用户也会 ...

  9. 【破茧成蝶-用户体验设计】读书笔记

    第一篇:成为用户体验设计师的信念 01.什么是用户体验设计 以用户为中心的一种设计手段,以用户需求为目标,为提升用户体验而做的设计. 用户体验设计首先是要解决用户的某个实际问题,其次是让问题变得更容易 ...

  10. 为何用户体验无法被设计,如何为用户体验设计

    近来许多设计师开始谈论用户体验(UX).我们试图取悦用户,甚至提供某种魔力,这样他们才会爱上我们的网站.应用程序和启动界面.用户体验是一个非常模糊的概念,导致许多人对它产生了错误的理解.此外,很多设计 ...

最新文章

  1. java中的ThreadLocal
  2. 【小米校招笔试】在Excel中,列的名称是这样一个递增序列:seq={A、B、C、... Z、AA、AB、AC、... AZ、BA、BB、BC、... BZ、CA、... ZZ、AAA、AAB...
  3. linux c之gdb常用断点调试总结
  4. CloudFlare CDNJS 漏洞差点造成大规模的供应链攻击
  5. python机器学习库sklearn——Lasso回归(L1正则化)
  6. 无监督学习︱GAN 在 NLP 中遇到瓶颈+稀疏编码自学习+对偶学习
  7. [C/C++] C++中new的语法规则
  8. 清除计算机用户缓存,如何在Windows 7中清除内存缓存,释放电脑空间?
  9. 高响应比优先调度算法的模拟(非抢占式C++)
  10. ESP8285+WS2812+MAX9814制作的音乐律动氛围灯
  11. vi修改文件格式编码(从dos改为unix)
  12. 【Python爬虫实战】 图片爬虫-淘宝图片爬虫--千图网图片爬虫
  13. 创业者最爱的美剧《硅谷》大结局竟然是这样!
  14. 计算机应用程序错误怎么解决办法,应用错误,教您怎么解决explorer.exe应用程序错误...
  15. spring boot项目:用户中心的商品信息编辑功能
  16. E聊SDK-简介(1): 介绍
  17. 媒体对华为不公,国人应该清醒 [转]枯荷雨声
  18. cshop模板smarty foreach详解
  19. mac给ps安装字体包
  20. 一个屌丝程序猿的人生(四十五)

热门文章

  1. java pdf插件下载_免费java pdf控件
  2. zuul 启动 threw exception_SpringCloud-Zuul-网关路由过滤器
  3. 文件系统演示C语言,基于C语言的简单文件系统的实现
  4. Java项目:在线高中考试系统(java+SSM+Jsp+Mysql+Maven)
  5. mysql 分表原理_MYSQL 分表原理(转)
  6. 如何用JavaScript操作form表单组件?
  7. uniapp实现页面左右滑动,上下滑动事件
  8. Entity Framework 约定
  9. springMVC swagger2
  10. SQL Server 2014新特性——基数评估(白皮书阅读笔记)