![]() |
| From blog |
![]() |
| From blog |
Related Posts
记得有很多次都在书店看到这本书了,但是看了看觉得买下不太值,所以就一直没买,上上星期到省图书馆看到这本书,书不厚,就借来看看。
这本书写于上世纪八十年代,在计算机书籍中已经算是很旧的了,我觉得这书现在来看除了作者原本要传达的意思,还多了许多讲述历史的成分,让我们知道了很久以前的 C 语言是什么样子的。那时侯,连 ANSI89 都没有定下来,书中讨论了很多是用 ANSI 的新写法,还是为了兼容而用老写法的问题,现在这个问题应该已经没有什么价值了吧?书中不少陷阱和缺陷也就被 fixed。
举个例子,很久以前,有的编译器允许对字符串字面值进行修改,现在看来,已经是非常荒唐的事情了。(让我想起潭浩强在书里修改字符串字面值的事,或许他用的是很有年头的编译器?呵呵)
不过,现在的 C 语言还是那么诡异,有不少陷阱和缺陷,这本书也算是个 check list,查漏补缺。里面许多东西我以前都见过了(或者真的犯过),不过还有不少我们没见过的,呵呵。
我知道的比如,getchar() 的返回值是 int,dangling else,switch,求值顺序等等。
不知道的也很多,比如分析 token 的时候的贪心方法,a[i] 和 i[a] 一样等等,还有 varargs 等的用法。
推荐大家看看,应该用不了多长时间,当是查漏补缺了。
Tags:C++疑问: