c专家编程(笔记)new

c专家编程(笔记)new

ID:34416561

大小:119.76 KB

页数:6页

时间:2019-03-05

c专家编程(笔记)new_第1页
c专家编程(笔记)new_第2页
c专家编程(笔记)new_第3页
c专家编程(笔记)new_第4页
c专家编程(笔记)new_第5页
资源描述:

《c专家编程(笔记)new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第一章:一:尽量不要在你的代码中使用无符号类型,以免增加不必要的复杂性,尤其是不要仅仅因为无符号数不存在负值(如年龄,国债)而用它来表示数量。只有在使用位段和二进制掩码时,才可以使用无符号数,应该在表达式中使用强制类型转换,使操作数均为有符号数或无符号数。这样就不必由编译器来选择结果的类型。二:当执行算术运算时:操作数的类型如果不同,就会发生转换,数据类型一般朝着浮点精度更高,长度更长的方向转变。整型数如果转换为signed不会丢失信息,就转换为signed,否则转换为unsigned。一个L的NUL用于结束一个ASCALL字符串。AS

2、CALL字符中零的位模式被称为NUL。两个L的NULL用于表示什么也不指向,(空指针)第二章:这不是BUG,而是语言特性2.1多做之过:这些特性包括容易出错的switch语句,相邻字符串常量的自动连接和缺省全局范围。C语言中,几乎从来不进行运行时错误检查---对进行解除引用操作的指针有效性检查大概是唯一的例外。无效的指针可能成为程序员的噩梦,人们很容易用一个无效的指针来引用内存。在所有的虚拟内存体系结构里,一旦一个指针进行解除引用操作时,所引用的内存超出内存地址的虚拟地址空间,操作系统就会结束这个进程。但是MS—DOS并不支持虚拟内存,

3、即使内存访问失败,它也无法立即捕获这种情况。C语言的理念,程序员应该知道自己正在干什么,而且保证自己的所做所为是正确的。各个case和default的顺序是可以任意的,但习惯总是把default放在最后。switch存在的一些问题是,其中之一是它对case可能出现的值太过放纵了,例如可以在switch的做好括号后声明一些变量,从而进行一些局部存储的分配,在最初的编译器中,这是一个技巧--绝大多数用于处理复杂复合语句的代码都可以被复用。switch语句缺省采用”fallthrough“,在97%的情况下都是错误的。break语句事实上跳出

4、的是最近的那层循环语句或switch语句。字符串常量的自动合并意味着字符串数组在初始化时,如果不小心漏掉了一个逗号,编译器不会发出错误信息,而是悄无声息的合并在一起。在最后一个字符串末尾的逗号并不是打错字,而是从早期的C语法中继承下的东西,不管存在是否有意义,ANSIC对它的解释是是C语言自动生成容易些。太多的缺省可见性定义C函数时,在缺省情况下名字是全局可见的,可以再名字前面加一个冗余的extern关键字,也可以不加,效果一样的。如果想限制这个函数的访问,就必须加个static关键字。2.2误做之过:C语言中属于“误做之过”的特性,就

5、是语言中有误导性质或是不适当的特性,这些特性有些跟C语言的简介有关,有些则更操作符的优先级有关。C语言存在的一个问题就是它太简洁了,仅增加,修改或删除一个字符就会使程序成另外一个仍然有效却全然不同的程序。更糟糕的是,许多符号是被”重载的“在不同的上下文环境有不同的意思。当sizeof的操作数是个类型名时,两边必须加上括号(这常常使人认为他是一个函数),但操作数如果是一个变量则不必加括号。你让一个符号所表达的意思越多,编译器就越难检测到这个符号在你的使用中所存在的异常情况。2.3少做之过属于少做之过的特性就是语言应该提供但未提供的特性。C

6、语言有最大一口策略,这种策略表示如果下个标记有超过一种的解释方案,编译器将选取最长的字符序列方案。第三章声明参数按照从右到左的次序压倒堆栈中,这种说法过于简单了,参数在传递时首先尽可能地存放到寄存器中(追求速度)。一个int型变量跟只包含一个Int型成员的结构变量S在参数传递时可能完全不同,一个int型参数一般会被传递到寄存器中,而结构变量s在参数则很可能被传递到堆栈中。结构体:在结构中放置数组,如structs_tag{inta[100];};现在可以把数组当做第一等级的类型,用赋值语句拷贝整个数组,一传值的方式传递到函数,或者把它作

7、为函数的返回类型。在典型的情况下并不需要频繁的对整个数组进行赋值操作。但是如果需要这样做,可以通过放入结构中实现。C语言声明的优先级A声明从它的名字开始读取,然后按照优先级一次读取。B优先级从高到低一次是:1声明中被括号括起来的2后缀符号()【】3前缀符号*不要在一个typedef中放入几个声明器,千万不要把typedef嵌到声明的中间部分。不要为了方便起见对结构使用typedef,这样做唯一的好处是能使你不必书写struct关键字,但这个关键字可以向你提示一些信息,你不应该把它省掉。typedefintx[10],#definexin

8、t[10]的区别正确思考这个问题的方法是把typedef看成是一种彻底的“封装”类型--在声明它之后不能再往里面增加别的东西。它和宏的区别体现在两个方面。首先,可以用其他类型说明符对宏类型进行扩展,但对ty

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。