《高质量程序设计指南C++/C语言》一书作者—上海贝尔的林锐博士在华东师范大学软件学院举办了“高质量软件开发之道”专题技术讲座,该讲座旨在将“高质量软件开发之道,以及内建高质量,而非修补质量”这一理念带给中国未来的软件精英们。9月24日和9月26日,还将在西安电子科技大学和北京信息工程学院举办此系列的讲座。
解决方案 »
- 数据结构应该怎么设计,解决下问题,谢谢~
- 专利代理申请的人,烦死我了
- vs2008中怎样添加已定义的ActiveX控件?
- 有谁知道在widnows编程里面如何加载html资源么!
- 请大狭问如何可以获得界面上光标是否落在一个指定CComboBox控件上???
- 开始学习VC++时的困惑
- 为什么向空数据库添加记录后,update会出错???
- 请问各位,如何在我的程序菜单上加一个卸载SHORTCUT,以方便卸载?
- ADO: 如何在 m_pCommand->CommandText="" 中使用嵌套select 语句?
- windows版qt界面程序与arm开发板进行通信
- 请问那位有线程池的实现实例?
- **********初学者挥泪求救:请问怎样对树型控件进行扩展?
===================================================================
我粗略看了一下介绍和前面几页,再翻看了一下习题,令我吃惊的是最开始的两题的答案根本就不对,我的解析如下:一、第一题
题目:请写出 BOOL flag 与“零值”比较的 if 语句。
标准答案:
if ( flag )
if ( !flag )
如下写法均属不良风格,不得分。 if (flag == TRUE) if (flag == 1 ) if (flag == FALSE) if (flag == 0)
上面的答案是对的吗?否
BOOL 和 0的比较,他说不能写 if(b == FALSE),这是不正确的,事实上if(!b)和if(b==FALSE)是完全等价的,因为FALSE 为0。
这个问题的考察点就在于TRUE是1,但BOO真指非零,而不一定是TRUE(1),所以if(flag == TRUE)这样的表达式错误的。但若返回假,则一定是返回0(即FALSE),就这一点而已,if(flag == FALSE)显然是可写的,同理if(flag == 0)也是正确的。二、float类型和0的比较。
作者给的答案是这样的:
const float EPSINON = 0.00001;
if((x >=-EPSINON) && (x<=EPSINON));这样的答案显然是错的,之所以if(x==0.0)是不正确的是因为因为存储误差可能导致这样的比较不正确,上面定义EPSINON所导致的误差就比if(x==0.0)这个表达的误差小吗?愚昧,照这种理论,那么0.000001应该和0.0是相等的,这个EPSINON随便定义一个就对吗,错!MSDN中定义了一个这样的值:
FLT_EPSILON 1.192092896e-07F
这个值是最小浮点精度,所以,正确的表达式应该是:
if(fabs(x) < FLT_EPSILON)
对double型,这个比较参照是DBL_EPSILON,具体值请查MSDN
最前面的两道题目都有问题,再看下面的问题就显得多余了,估计问题也不少。听说有人将这种质量当做培训教材,也有当面试试题的,真是瞎了眼。有此举动的人也跟林锐一样,无知!上海贝尔的人就这水平,让人贻笑大方,居然听说这个家伙主管技术面试,好恐怖,在他手里考不及格的人有两类,一类是太烂,一类是太聪明:)
愚昧的人们,不要再喝彩了,你喝彩的声音越大,说明你越无知。这种烂书只能将它请下书架,付之一炬,省得坑人。
第一题有些异议
if (flag == TRUE)
if (flag == FALSE)
没错,可是
if (flag == 1 )
if (flag == 0)
不敢苟同,因为不同平台宏定义不一样,
TRUE不一定等于1,FALSE也不一定等于0,
这么写不利于代码的移植.
显然同理,宏FLT_EPSILON只在VC下有用.而且各系统的精度也不同.
自定定义可以控制精度. 多数情况下, 我们也没有必要精确到小数点后7位(float),或着小数点后16位(double).
一点个人看法,不当之出请指正.
================================================================CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!★ 浏览帖子速度极快![建议系统使用ie5.5以上]。 ★ 多种帖子实现界面。
★ 保存帖子到本地[html格式]★ 监视您关注帖子的回复更新。
★ 可以直接发贴、回复帖子★ 采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录!
★ 支持在线检测程序升级情况,可及时获得程序更新的信息。★★ 签名 ●
可以在您的每个帖子的后面自动加上一个自己设计的签名哟。Http://www.ChinaOK.net/csdn/csdn.zip
Http://www.ChinaOK.net/csdn/csdn.rar
Http://www.ChinaOK.net/csdn/csdn.exe [自解压]
learn and attention and up