博客首页 注册 建议与交流 排行榜 加入友情链接         宝宝相册的专门空间
推荐 投诉 搜索: 帮助

aobai

给自己立法三章: 一:决不抄袭 二:向一个优秀的网络,linux专家看齐 三:做事要专心,要脚踏实地,step by stey PS:本blog完全是为了自己学习所用,如果转载文章有不妥的地方,请指出,一定改正。
aobai.cublog.cn


读书笔记《c 专家编程》2
         已经很晚了,没事,将今天看的写下来。


  第二章:这不是Bug,而是语言特性     


  switch 语句带来的麻烦
   1)default 语句(如果有的话)可以出现在case列表的任何位置,它在其他的case语句无法匹配的时候被选中
   2)break中断了什么?
         简陋的说就是break 语句事实上跳出的是最近的那层循环语句或switch 语句,而不是什么if 语句。
   以上这些都是很容易出现bug 的地方。


 小启发:
        需要一些临时变量吗?把它放在快的开始处!
        还有就是const 其实并不是真正的常量。在case的表达式中用它表示常量是要出错的。
     
关于case语句的full through,也是一个缺点。
举个经典的列子:
     generate_initializer(char * string )
{
    static char separator = ' ';
    printf("%c %s \n",separator,string);
    separator = ',';
}
在第一次执行的时候,函数首先打印出一个空格,然后打印一个初始化字符串。所以后续的初始化字符串前面都将加一个逗号。“第一次执行的前面加个空格”相比“最后一次执行,省略后缀”对程序而言更加简单,而且不容易出错。

以前都考过这种类型的,的确是好办法。

还有就是要知道什么是interpositing (p 36)

c语言中的 符号重载:简单一句话,对于不同的环境,同样的符号的意思可以完全不同。
比如 static 在函数内部,表示该变量的值在各个调用期间一直保持延续性。
                      在函数这一级上,表示该函数只对本文件可见。
         extern  用于函数定义,表示全局可见
                       用于变量,表示其他地方定义的。
        void    等等。

还有一个问题,对于我来说是比较难的,即使sizeof 函数的具体用法。
只需要懂一个问题,apple = sizeof (int) * p是多少?

还有就是==和!= 和位操作符.赋值符的优先级关系.前者高于后两者。

小启发:
       乘法和除法优于加法和减法,除此外的所有操作符,我们都应该加上括号。
 
结合性是什么意思?(p41)

。。。。。。
                             

发表于: 2008-05-09 ,修改于: 2008-05-09 02:47,已浏览146次,有评论0条 推荐 投诉


网友评论

发表评论