C 语言陷阱和缺陷[1]

winxos 11-01-28

winxos 11-01-28

原著:Andrew Koenig - AT&T Bell Laboratories Murray Hill, New Jersey 07094

原文:收藏

翻译:lover_P

[译序]

那些自认为已经“学完”C 语言的人,请你们仔细读阅读这篇文章吧。路还长,很多东西要学。我

也是„„

[概述]

C 语言像一把雕刻刀,锋利,并且在技师手中非常有用。和任何锋利的工具一样,C 会伤到那些不

能掌握它的人。本文介绍C 语言伤害粗心的人的方法,以及如何避免伤害。

[内容]

 0 简介

 1 词法缺陷

o 1.1 = 不是 ==

o 1.2 & 和 | 不是 && 和 ||

o 1.3 多字符记号

o 1.4 例外

o 1.5 字符串和字符

 2 句法缺陷

o 2.1 理解声明

o 2.2 运算符并不总是具有你所想象的优先级

o 2.3 看看这些分号!

o 2.4 switch语句

o 2.5 函数调用

o 2.6 悬挂else 问题

 3 链接

o 3.1 你必须自己检查外部类型

 4 语义缺陷

o 4.1 表达式求值顺序

o 4.2 &&、||和!运算符

o 4.3 下标从零开始

o 4.4 C 并不总是转换实参

o 4.5 指针不是数组

o 4.6 避免提喻法

o 4.7 空指针不是空字符串

o 4.8 整数溢出

o 4.9 移位运算符

 5 库函数

o 5.1 getc()返回整数

o 5.2 缓冲输出和内存分配

 6 预处理器

o 6.1 宏不是函数

o 6.2 宏不是类型定义

 7 可移植性缺陷

o 7.1 一个名字中都有什么?

o 7.2 一个整数有多大?

o 7.3 字符是带符号的还是无符号的?

o 7.4 右移位是带符号的还是无符号的?

o 7.5 除法如何舍入?

o 7.6 一个随机数有多大?

o 7.7 大小写转换

o 7.8 先释放,再重新分配

o 7.9 可移植性问题的一个实例

 8 这里是空闲空间

 参考

 脚注

0 简介

C 语言及其典型实现被设计为能被专家们容易地使用。这门语言简洁并附有表达力。但有一些限制

可以保护那些浮躁的人。一个浮躁的人可以从这些条款中获得一些帮助。

在本文中,我们将会看一看这些未可知的益处。这是由于它的未可知,我们无法为其进行完全的分

类。不过,我们仍然通过研究为了一个C 程序的运行所需要做的事来做到这些。我们假设读者对C 语言至

少有个粗浅的了解。

第一部分研究了当程序被划分为记号时会发生的问题。第二部分继续研究了当程序

c语言局限性,C语言陷阱与缺陷.pdf相关推荐

  1. 【2018深信服 醒狮计划】《C陷阱与缺陷》学习笔记

    2018深信服"醒狮计划"笔记 先自我介绍一下,湖大研一计算机的菜鸡,本科网络工程的,大学里不务正业一直在做应用,大一自学过一段时间的MFC,Windows网络编程,感觉比控制台好 ...

  2. C语言三剑客之《C陷阱与缺陷》一书精华提炼

    点击上方"大鱼机器人",选择"置顶/星标公众号" 福利干货,第一时间送达! 1.C陷阱与缺陷概述 C语言像一把雕刻刀,锋利,并且在技师手中非常有用.和任何锋利的 ...

  3. c语言 去掉双引号_技术分享|浅谈C语言陷阱和缺陷

    良好的软件架构.清晰的代码结构.掌握硬件.深入理解C语言是防错的要点,人的思维和经验积累对软件可靠性有很大影响.C语言诡异且有种种陷阱和缺陷,需要程序员多年历练才能达到较为完善的地步.软件的质量是由程 ...

  4. C 语言陷阱和缺陷(一)

    CSDN话题挑战赛第2期 参赛话题:学习笔记 文章目录 前言 简介 第一部分:词法缺陷 1. 1 = 不是 == 1.2 多字符记号 1.3 多字符记号一些例外说明 1.4 字符串和字符 第二部分:句 ...

  5. C语言常见困惑、错误集锦(上) ——《C陷阱与缺陷》3篇

    AndrewKoenig自己在Bell实验室时发表的论文为基础,结合自己的工作经验扩展成这本对C程序员具有珍贵价值的经典著作.写作本书的出发点不是要批判C语言,而是要帮助C程序员绕过编程过程中的陷阱和 ...

  6. C语言三剑客-C和指针、C专家编程、C陷阱和缺陷

    阅读这三本书,记录一下平时没注意的细节点,持续更新- C和指针 数据 1.四种基本类型是 整型.浮点型.指针.聚合类型(数组和结构等) 2.整型字面值缺省情况下是能完整容纳这个值的最短类型 3.字面值 ...

  7. 《C语言陷阱与缺陷》第二章【语法陷阱】上

    目录 ✊ 一.理解函数声明 ☝️ 二.运算符的优先级问题 ✌️ 三.注意作为语句结束标志的分号 ✊ 一.理解函数声明 先来看下面这条语句: (* (void(*) () ) 0 ) (); 这样的表达 ...

  8. 《C陷阱与缺陷》一导读

    前 言 C陷阱与缺陷 对于经验丰富的行家而言,得心应手的工具在初学时的困难程度往往要超过那些容易上手的工具.刚刚接触飞机驾驶的学员,初航时总是谨小慎微,只敢沿着海岸线来回飞行,等他们稍有经验就会明白这 ...

  9. 陇东学院c语言程序设计,C语言程序设计

    spContent=<C语言程序设计>是高等学校本科教育普遍开设的一门课程,是广大程序设计语言学习者首选的入门课程.本课程立足于C语言基础知识的讲解,讲授中引入大量实例,突出重点,剖析难点 ...

最新文章

  1. python中修饰器的优点和作用_Python装饰器(你想知道的这里都有)
  2. 在 Delphi 下使用 DirectSound (5): 获取或设置缓冲区的格式:
  3. Windows Server 2016 + Exchange 2016 +Office365混合部署(四)
  4. Oracle数据库的性能调整
  5. 守卫者的挑战(guard)
  6. Simulink之变压器隔离的直流-直流变换器
  7. Web前后端:如何分离,如何解耦?
  8. 使用PO+跨平台改造Macaca示例(APP端)
  9. 移动开发出路在哪里?是时候用物联网了!| 技术头条
  10. 一些Iphone sqlite 的包装类
  11. PAT-A1025 PAT Ranking
  12. hook技术截取服务器信息,Windows Hook技术
  13. linux驱动程序启动失败,打开程序提示加载驱动失败?三种故障原因及解决方法...
  14. Html table边框重叠存在空隙的问题
  15. 罗永浩宣布独家签约抖音 称希望成抖音一哥
  16. android 远距离识别,远距离 人脸识别!
  17. 大龄Android程序员刚迈过了 35 岁这个“坎儿”,和大家说点儿心里话
  18. ibatis学习以及与mybatis的不同
  19. 计科专业新生须知:什么才是编程?助你进阶大牛的必经之路
  20. 18.3 字节码指令集与解析举例 - 算数指令

热门文章

  1. docker中的容器和镜像
  2. java 静态代码块和spring @value注解注入执行顺序
  3. JAVA高并发秒杀系统构建之——高并发优化分析
  4. java 组合对象_Java 中组合模型之对象结构模式的详解
  5. nacos服务配置中心演示
  6. (六)Neo4j综合项目
  7. 【剑指offer - C++/Java】8、跳台阶
  8. 修改linux的最大文件句柄数限制
  9. Golang 学习资料
  10. 使用offsetof对结构体指针偏移操作