《狂人C》阅读笔记

2010-12-17 20:18

《狂人C》阅读笔记

by admin

at 2010-12-17 12:18:48

original http://sunxiunan.com/?p=1776

将在github的wiki上做持续更新,这里做个copy

https://github.com/saga/sagasw/wiki/%E7%8B%82%E4%BA%BAC

整体问题

对于C标准库的说明都说是编译器实现,这一点是不准确的,参考维基百科http://en.wikipedia.org/wiki /C_standard_library

提到一个真正是莫名其妙不知所云的C语言中国国家标准,这是个什么玩意?谭浩强主编的?

primary expression翻译成初等表达式,这个是败笔,难不成还有中等表达式和高等表达式?我建议如果再版,改做“基本表达式”,元表达式也不妥,一般来讲编程中的“元”多从“meta”这个单词产生,如metaprogramming。

page37, printf(“%d\n”, 1234567890123); // 0x11f71fb04cb 在little-endian机器上,大部分我们机器,如Intel、AMD,结果都应该是1912276171(0x71FB04CB),而在 powerpc的ibook g4 big-endian机器上,结果为287(0x11F)。这个结果是有章可循的。

page38, 应该说明sizeof不会对表达式求值。 sizeof(m++); // m will NOT increase

page62,”后者也是一种错误代码”,感觉提法不容易理解,-> “标准未定义的代码也是应该避免的”。

预处理命令 #definede : typo

注释在编译前被替换成空白字符,这部分待查(gcc,vc)。

page63,风格习惯。命名规范问题,应该用准确的英语做标记。reminder = dividend % divisor; better than ys = bcs % CS;

常见错误,/* comment */,一般常见的IDE会有代码着色功能,如VC++会把注释标记为绿色,而大部分编辑器如vim (textmate)也可以做标记着色。