捉虫历险记:常见C++ Bug大围剿

捉虫历险记:常见C++ Bug大围剿
作 者: Steve Oualline 彭珲 糜元根
出版社: 清华大学出版社
丛编项:
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: C++
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

暂缺《捉虫历险记:常见C++ Bug大围剿》作者简介

内容简介

全书分为三大部分:第I部分使用幽默风趣的语言,列举了114个不同类型、含bug的程序代码,其内容几乎涵概了C++/C程序中容易产生的各种bug;第II部分给出了第一部分114个bug程序代码所涉及问题的提示,且提示过程层层深入,留给读者充分的空间,以思考问题的解决方法;第III部分给出114个bug程序代码所涉及的问题答案对一些非常典型的程序问题还进行了扩展,以拓宽读者思路。本书采用幽默通俗的语言和大量典型的带有bug的程序,帮助读者从其他程序员的失误中吸取教训,从而减少自己程序中的错误。全书分为三大部分:第I部分使用幽默风趣的语言,列举了114个不同类型、含bug的程序代码,其内容几乎涵概了C++/C程序中容易产生的各种bug;第II部分给出了第一部分114个bug程序代码所涉及问题的提示,且提示过程层层深入,留给读者充分的空间,以思考问题的解决方法;第III部分给出114个bug程序代码所涉及的问题答案对一些非常典型的程序问题还进行了扩展,以拓宽读者思路。本书适合所有从事C++/C语言开发的程序员,特别是那些常常被bug所困扰的程序员。作者简介:SteveOualline是一个有着35年丰富编程经验的优秀程序员,曾编写过多本畅销书,包括PracticalCProgramming和PracticalC++Programming(O''''Reilly出版社出版)。

图书目录

第Ⅰ部分 程序 1

第1章 入门 1

1.1 程序1:Hello World 2

1.2 程序2:老师的问题 3

1.3 程序3:清晨的惊奇 5

第2章 初级错误 8

2.1 程序4:典型的初始化问题 8

2.2 程序5:早期错误 9

2.3 程序6:必须为程序保留“空间” 10

2.4 程序7:错误的平方 11

2.5 程序8:“疯狂”的字符 12

2.6 程序9:注释的问题 13

2.7 程序10:蹩脚的除法运算 14

2.8 程序11:画蛇添足 15

2.9 程序12:加快和等待 16

2.10 程序13:问题程序 18

2.11 程序14:移位程序 19

2.12 程序15:没有任何单词是关键字 20

2.13 程序16:事半功倍 22

第3章 字符的奇迹 24

3.1 程序17:又一个Hello World程序 24

3.2 程序18:典型错误 25

3.3 程序19:检查质数 26

3.4 程序20:比设想的情况更简单 27

3.5 程序21:错误的注释 28

3.6 程序22:参数的取值范围过大 29

3.7 程序23:计算字符个数 30

3.8 程序24:过于简单的除法 32

3.9 程序25:最大值的惊奇 33

3.10 程序26:问题区域 34

第4章 常见的问题 36

4.1 程序27:and和and and 36

4.2 程序28:关于零的错误 37

4.3 程序29:低级错误 38

4.4 程序30:关于位的小故障 39

4.5 程序31:数字太小 40

4.6 程序32:重复的问题 41

4.7 程序33:错误的输出 42

4.8 程序34:未考虑分制 43

4.9 程序35:输出一百万 46

4.10 程序36:超出堆栈空间 47

4.11 程序37:程序的故障点 49

4.12 程序38:奇偶测试 51

4.13 程序39:幼儿园算术修订版 52

4.14 程序40:难以置信的精确性 53

4.15 程序41:关于位的小错误 55

4.16 程序42:关于位的另一个故障 56

4.17 程序43:丢失基类函数 57

4.18 程序44:排序问题 59

4.19 程序45:三个数的惊奇 61

4.20 程序46:一切正常吗 62

4.21 程序47:Microsoft的缺陷 64

4.22 程序48:文件错误 66

4.23 程序49:容易中断的链接 68

4.24 程序50:何谓真理 71

4.25 程序51:递增问题 72

4.26 程序52:消失的矩形 74

4.27 程序53:最大值混乱 76

4.28 程序54:从深层开始 77

4.29 程序55:羊群计数程序 79

4.30 程序56:程序的魔法失效 80

4.31 程序57:无法读取文件 83

4.32 程序58:奇怪的文件名之一 84

4.33 程序59:奇怪的文件名之二 85

4.34 程序60:奇怪的文件名之三 87

4.35 程序61:慢吞吞的字典 88

4.36 程序62:邮政编码问题 94

第5章 C语言代码bug 96

5.1 程序63:姓名游戏 96

5.2 程序64:别样的π 97

5.3 程序65:临时文件混乱 98

5.4 程序66:丢失缓冲 99

5.5 程序67:捉迷藏 100

5.6 程序68:误算 101

5.7 程序69:求和问题 103

5.8 程序70:太简单的2 104

5.9 程序71:不能同步 105

5.10 程序72:无边的字符 107

第6章 预处理错误 109

6.1 程序73: 不是指针类型 109

6.2 程序74:总计错误 110

6.3 程序75:快速退出 111

6.4 程序76:“翻倍”的麻烦 112

6.5 程序77:没有value 113

6.6 程序78: 边距错误 114

6.7 程序79: 平方错误 115

6.8 程序80:面积剧增 116

第7章 没有类的类 118

7.1 程序81:感谢内存 118

7.2 程序82:数组消失的情形 120

7.3 程序83:疯狂的输出 122

7.4 程序84:构造函数 123

7.5 程序85:超长队列 124

7.6 程序86:缺乏自我保护 128

7.7 程序87:另类异常 131

7.8 程序88:文件输出错误 135

7.9 程序89:徒劳无功 137

7.10 程序90:像输出日志一样简单 140

7.11 程序91:堆栈错误 142

7.12 程序92:文件名游戏 146

7.13 程序93:没有魔术 147

7.14 程序94:速度杀手 150

7.15 程序95:发送错误消息 157

7.16 程序96:有趣的事情 158

第8章 专家的迷惑 162

8.1 程序97:再现Hello 162

8.2 程序98:控制调试器 163

8.3 程序99:幻影文件 164

第9章 地狱之门 165

9.1 程序100:失落的Rio 165

9.2 程序101:无返回指针 167

9.3 程序102:邮政编码问题 168

第10章 几个工作程序 170

10.1 程序103:快速交换 170

10.2 程序104:没什么可奇怪的 170

10.3 程序105:变动的flag 172

第11章 可怕的线程和嵌入式程序 173

11.1 程序106:清除缓冲区垃圾 173

11.2 程序107:更好的垃圾收集器 174

11.3 程序108:短时延之一 175

11.4 程序109: 短时延之二 176

11.5 程序110:短时延之三 177

11.6 程序111:读写冲突 178

11.7 程序112:运行与等待 181

11.8 程序113:浮动的标记 184

11.9 程序114:缓慢的进展 187

第Ⅱ部分 提示 191

第Ⅲ部分 答案 227