首页 | 新闻资讯 | 软件应用 | 图形图像 | 网络应用 | 硬件学堂 | 程序开发 | 安全中心 | 素材下载 | 作者专区 | 教育频道
学院论坛 | 推荐专题 | 专家答疑 | Flash剧场 | Photoshop | 名词解释 | 梦幻桌面 | PS高手进阶 | QQ区 | 壁纸 | 黑客教材
Flash教程| 动画制作 | AutoCAD  | 3DMax专区 | PS视频教程| 网页制作 | CorelDRAW| Firework | 滤镜与实例 | 全部视频教程
学院热点专题
|21视频专区| 照片处理 | QQ 动画 | 系统优化 | 会声会影 | 制作游戏 | Win2003 | 大话成语 | MSN专题 | 头条
| 天音听听 | QQ 技巧  | PHP编程 | 菜鸟入门 | 实用工具 | ADSL宽带 | 硬盘世界| BT  下载 | Vista  | 问吧
 欢迎各出版社以及作者与我们联系发布电子版书籍.电子邮件:
book@mail.enet.com.cn
 
书名:捉 虫 历 险 记
作者:(美) Steve Oualline
来源:清华大学出版社
ISBN:ISBN 7-302-07679-0/TP·5624
页数:805
开本:185×260
出版时间:2003
定价:36.00
  本书采用幽默通俗的语言帮助读者从其他程序员的失误中吸取教训,从而减少自己程序中的错误。全书共分为三大部分:第Ⅰ部分列举了114个不同类型、含有bug的程序代码,;第Ⅱ部分给出了第Ⅰ部分114个bug程序代码所涉及的问题的提示;第Ⅲ部分给出114个bug程序代码所涉及问题的答案。

第8章 专家的迷惑
欢迎阅读本书中最难理解的一部分。这一章为数不多的几个程序的设计目的是,哪怕您是最专业的C和C++程序员,也可能要被它所困惑。可能您自认为了解所有的编程技术,但是接着我们所陈述的几个问题是所有这些编程过程中可能遇到问题中最困难的。

本章只有三个问题。如果您能解决一个,您就可以认为您是专家级的程序员了。如果能解决两个,将会令我非常吃惊。如果能把这里的三个问题全都解决,您就可认为您是最好的程序员了。

8.1 程序97:再现Hello
下面这段程序会打印出什么?

1 /************************************************

2 * Normally I would put in a comment explaining ? *

3 * what this program is nominally used for. ? *

4 * But in this case I can figure out no ? *

5 * practical use for this program. ? *

6 ************************************************/

7 #include <stdio.h>

8 #include <unistd.h>

9 #include <stdlib.h>

10

11 int main()

12 {

13 printf("Hello ");

14 fork();

15 printf("\n");

16 exit(0);

17 }

(请参见“提示214”和“答案50”)

花絮

莎士比亚已经给过我们一个古老的问题:to be or not to be?计算机科学给了我们这个答案:FF。

0X2B | ~0X2B=0XFF

(编者按:英文中to be和2B的发音类似。)

后记:

在大部分情况下,当我把这个笑话讲述给一个非技术人员听时,他们都只是奇怪地看着我。技术人员专注地想了大约一分钟,然后说:“您是对的。”在大约一百人中,只有一个人是真正地笑了。

8.2 程序98:控制调试器
这个程序员有个非常聪明的想法。他想在语句:

if(debugging)

中放一些代码,然后运行这个程序。当他想调试程序的时候,用交互式的调试器debugger来改变debugging的值(0或1)。但是这段代码的实际运行却大出他的意外。

1 /************************************************

2 * Code fragment to demonstrate how to use the ? *

3 * debugger to turn on debugging. All you ? *

4 * have to do is put a breakpoint on the "if" ? *

5 * line and change the debugging variable. ? *

6 ************************************************/

7 extern void dump_variables(void);

8

9 void do_work()

10 {

11 static int debugging = 0;

12

13 if (debugging)

14 {

15 dump_variables();

16 }

17 // Do real work

18 }

(请参见“提示174”和“答案84”)

花絮

在UNIX操作系统下创建文件是很容易的事情。因此,用户习惯创建很多文件,因而也占用了大量的磁盘空间。关于UNIX系统有这样的一个说法,如果在UNIX系统中只有一件事是很标准的,那就是UNIX系统不断地弹出让用户清理文件的消息框。

—— 源自早期的《UNIX管理员指南》

8.3 程序99:幻影文件
目录中没有一个叫delete.me的文件。为什么这个程序一直让我们删除它呢?

1 /************************************************

2 * delete_check -- Check to see if the file ? *

3 * delete.me exists and tell the user ? *

4 * to delete it if it does. ? *

5 ************************************************/

6 #include <iostream>

7 #include <unistd.h>

8 #include <cstdio>

9

10 int main()

11 {

12 // Test for the existence of the file

13 if (access("delete.me", F_OK)) {

14 bool remove = true;

15 }

16 if (remove) {

17 std::cout <<

18 "Please remove 'delete.me'\n";

19 }

20 return (0);

21 }

(请参见“提示98”和“答案35”)


本书目录
常见C++ Bug大围剿
程序2:老师的问题
清晨的惊奇
典型的初始化问题
错误的平方
蹩脚的除法运算
问题程序
Hello World程序
计算字符个数
过于简单的除法
关于零的错误
关于位的小故障
未考虑分制
程序的故障点
幼儿园算术修订版
关于位的另一个故障
Microsoft的缺陷
容易中断的链接
最大值混乱
无法读取文件
慢吞吞的字典
姓名游戏
误算
不能同步
求和问题
不是指针类型
平方错误
总计错误
快速退出
数组消失的情形
超长队列
另类异常
文件输出错误
堆栈错误
文件名游戏
速度杀手
发送错误消息
控制调试器
幻影文件
再现Hello
每周龙虎榜
★★★★★
  本书从软硬件方面着手,介绍网络基础和原理。
★★★★
  本书用诙谐幽默的语言介绍了搜索引擎的使用。
★★★
  本书通过实例讲解,让您在复杂的职场中轻松应对。

热门关键字:手机 | 笔记本 | MP3 | 移动存储 | 数码相机 | 数码摄像机 | 显示器 | 学院 | 软件下载 | 游戏 | IT女性 | 方案库

关于eNet | 广告服务 | 我们的产品 | 使用版权 | 投稿指南 | 诚邀加盟 | 联系我们

网站合作、内容监督、商务咨询:010-65245588
对本站有任何建议、意见或投诉,请点这里在线提交
Copyright © 2000-2012 硅谷动力公司版权所有

未经授权禁止转载、摘编、复制或建立镜像.如有违反,追究法律责任.
【声明】本网站部分内容属论坛网友发布,本网站仅提供网友交流平台,但有权在本网站
范围内引用、发布、转载来自论坛网友发布的内容。网友发布内容纯属个人行为,与本网
站立场无关。本网站对于论坛网友发布的内容所引发的版权、署名权的异议及纠纷,不承
担任何责任。其他媒体转载须事先与原作者和本网站联系。
京ICP证000088