QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1683|回复: 21

《高质量C++/C编程指南》才发现的感觉很棒,和拿来大家分享

[复制链接]
发表于 2005-6-7 18:14:00 | 显示全部楼层 |阅读模式
感觉很适合,像我这样的新手。
也希望对大家有所帮助。

http://bbs.sjtu.edu.cn/file/C/1109730375293340.pdf
发表于 2005-6-7 21:42:41 | 显示全部楼层
开卷有益
回复

使用道具 举报

发表于 2005-6-8 02:10:09 | 显示全部楼层
这书在 CSDN 被兄弟们批得不行了,勘误帖子开了一个又一个。里面很多观点过于偏激刻板。总的来说,不太值得浪费时间深究,粗略浏览一遍族矣
回复

使用道具 举报

发表于 2005-6-8 15:57:01 | 显示全部楼层
呵呵,我倒是觉得写得比较深刻,看看挺好的。而且很多公司招聘员工考试的时候相当多的东西都是这个。
回复

使用道具 举报

发表于 2005-6-8 16:34:45 | 显示全部楼层
http://community.csdn.net/Expert/TopicView.asp?id=3365921
http://community.csdn.net/Expert/TopicView.asp?id=3362261
http://community.csdn.net/Expert/TopicView.asp?id=3368437
回复

使用道具 举报

发表于 2005-6-8 17:04:20 | 显示全部楼层
看过了!一般
回复

使用道具 举报

发表于 2005-6-8 19:37:58 | 显示全部楼层
呵呵,我觉得很不错啊~
回复

使用道具 举报

 楼主| 发表于 2005-6-9 13:50:38 | 显示全部楼层
4.3.1 布尔变量与零值比较
􀁺 【规则4-3-1】不可将布尔变量直接与TRUE、FALSE 或者1、0 进行比较。
根据布尔类型的语义,零值为“假”(记为FALSE),任何非零值都是“真”(记为TRUE)。TRUE 的值究竟是什么并没有统一的标准。例如Visual C++ 将TRUE 定义为1,
而Visual Basic 则将TRUE 定义为-1。
假设布尔变量名字为flag,它与零值比较的标准if 语句如下:
if (flag) // 表示flag 为真
if (!flag) // 表示flag 为假
其它的用法都属于不良风格,例如:
if (flag == TRUE)
if (flag == 1 )
if (flag == FALSE)
if (flag == 0)



这一段没看懂,为什么   if (flag) // 表示flag 为真     此时 flag 的值到底是多少,是1 吗?
我以前都是用  if (flag == TRUE)  表示的。
回复

使用道具 举报

发表于 2005-6-9 14:53:39 | 显示全部楼层
Any non 0 value will direct a "if" closure into the succeeding procedure, so if ( val == TRUE ) is NOT recommanded.
Use if ( val ) or if ( !val ) instead.
回复

使用道具 举报

发表于 2005-6-9 14:53:42 | 显示全部楼层
虽然有些古板,但是仍然非常值得一看.

csdn上有些人的评论有点偏激,有些人喜欢找别人的问题,从而显得自己比较高明.

to : boyxsh

" 其它的用法都属于不良风格,例如:
if (flag == TRUE)"

对于这个问题,根据我的理解:

会存在这样的情况,看一下如下的代码

int flag;
.....改变了flag的值,假设flag = 2...

这时的if(flag == TRUE)的条件将不成立  
而用if(flag)就不会存在这样的问题.

所以if(flag == TRUE)属于不良的编程风格,很容易因为写代码时候的失误导致问题,使用if( flag )可以避免这些不必要的错误.

这个问题和 if( flag == TRUE) 与 if(TRUE == flag)有些类似.

都是一些习惯好坏的问题,并不是对错的问题

<Write clean code> www.infoxa.com有得下.
这本书与<高质量C++/C编程指南>有些相似,也是讲如何才能编写出高质量的代码,能够真正理解其中奥义的人,已经可以算是专业的开发者了
回复

使用道具 举报

发表于 2005-6-9 14:59:52 | 显示全部楼层
Moonwell

我承认 CSDN 上是有攻击人的不良风俗,但是发这一组帖子的 laomai 和 fangrk 是我熟悉的人,他们的技术水平我也是知道的。这书我也看过,这些帖子我也看过,我觉得里面的话题还是比较中肯合度的,否则我不会拿来这里转贴。
甚至书的作者已经给 fangrk 回信,承认出现了这些错误。因此,读这书的时候应该参考这些勘误帖,避免走更多的弯路。
回复

使用道具 举报

发表于 2005-6-9 15:02:00 | 显示全部楼层
这种叫做代码八股文!
程序员自己要清楚在干什么,如果说你认为自己会犯把bool++这样的错误 你需要的是回去睡一觉清醒一下
何况:这里写用if(flag) 那如果在我的系统里就是flag=0是真 =-1是假呢? 开发环境何止千种?
做一个好的开发者,就一点都不要去看这种书。看这种书出来的最多是个好工人。

这书在 CSDN 被兄弟们批得不行了,勘误帖子开了一个又一个。里面很多观点过于偏激刻板。总的来说,不太值得浪费时间深究,粗略浏览一遍族矣

看来还是不少人和我观点一致的
回复

使用道具 举报

发表于 2005-6-9 15:46:53 | 显示全部楼层
wsm

bool++
C 语言中不存在 bool 类型变量
这里写用if(flag) 那如果在我的系统里就是flag=0是真 =-1是假呢?

抱歉,0 为假是 C 语言标准规定的。不符合标准的个性化实现不在此讨论范围。
既然是讨论技术问题,不妨严谨一些。这书虽然错误疏漏弊病多,也未到句句垃圾的地步。
回复

使用道具 举报

发表于 2005-6-9 15:58:59 | 显示全部楼层
C 语言中不存在 bool 类型变量

估计你还没工作吧? 东西做多了就了解什么才是语言了。
回复

使用道具 举报

发表于 2005-6-9 17:15:09 | 显示全部楼层
呵呵,我是没工作,但是我也知道 bool 是 C++ 的,boolean 是 Java 的,_Bool 才是 C 的——真不知道你的工资是怎么骗来的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-5 21:57 , Processed in 0.060485 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表