本帖最后由 丁铭检 于 2015-7-13 11:11 编辑
一、#include指令
1.文件包含命令的格式
#include " " (包含的是一个用户定义的文件,可以是库文件,也可以是普通文件)
查询循序:
l 在当前文件所在的路径下查找 l 如果上面没有找到,到编译器include路径查找 l 如果编译器include路径下没有找到,系统的include路径下查找 l 如果上面是三个都没有找到就报错 #include< >
查询循序:
l 到编译器include路径查找 l 如果编译器include路径下没有找到,系统的include路径下查找 l 如果上面是两个都没有找到就报错
总结:
#include " "与#include< >的区别其实就在于前者包含了自己编写的文件,所以它的查找路径回比后者多一步,运行速度上回相对慢一点。
#include 她是一个预处理指令,语句之后不需要加分号
2. 文件包含的实质
文件包含命令的功能是把指定的文件内容插入该命令行位置,取代该命令行,从而把文件和当前的源文件连成一个源文件。
3. 如果修改了编译器的include 中的自定义文件后,运行后发现没有改变
破法: 清除缓存。
二、 多文件开发实现及注意事项
关于文件的内容,初学者还必须注意
u 头文件中可以和C程序一样引用其他头文件,可以写预处理快,但不要写具体的语句。 u 可以声明函数,但不可以定义函数 u 可以声明常量,但不可以定义常量 u 可以“定义”一个宏函数。注意:宏函数很象函数,但却不是函数,其实还是个声明 u 结构的定义,自定义数据类型一般也要放在头文件中 u 多文件编程时,只能有一个文件包含main函数,因为一个工程只能有一个入口函数,我们包含main函数文件称为主文件 u 为了更好的组织各个文件,一般情况下一个 .C 文件对应一个 .H 文件,并且文件名要相同。 u 头文件要遵循幂等性原则,既可以多次包含相同的头文件,但效果与只包含一次相同 u 防止重复包含的措施 四、数据在计算机内部是以补码的形式储存
1. 数据分有符号和无符号数
2. 无符号数都是正数,由十进制直接转换到二进制直接存储(其实也是该十进制的补码)即可。
3. 有符号数用在计算机内部是以补码的形式储存的(正数的最高位符号位是 0,负数的最高位符号位是 1 )
4. 反码,补码的计算规则
对于正数: 反码 == 补码 == 原码
对于负数: 补码 == 反码 + 1
反码 == 原码除符号位以外其他位逐个取反
五、位操作符的介绍
1、按位与:& (有 0 则为 0 ,同 1 才为 1)
主要用途:取(或保留)1个数的某(些)位,其余各位置0。获取一个数的最低位,让这个数和 1 进行按位与操作。也可以判断这个数的奇偶性。
2、按位或:| (有 1 则为 1 ,同 0 才为 0)
主要用途:将1个数的某(些)位置1,其余各位不变。
3、按位异或:^ (相同才为 0 ,不同则为 1)
主要用途:使1个数的某(些)位翻转(即原来为1的位变为0,为0的
变为1),其余各位不变。
4、按位取反:~
主要用途:间接地构造一个数,以增强程序的可移植性。
注意: ~ 运算符的优先级别比算术运算符、关系运算符、逻辑运算符和其他位运算符都高,
5、按位左移:<< (可能会改变数据的正负性)
左移一位相当与乘以 2 ,左移 n 位相当与乘以 2的N次方
6、按位右移:>>
右移一位相当与除以 2 ,右移 n 位相当与除以 2的N次方
注意: 在右移时,需要注意符号位问题。
对无符号数,右移时左边最高位补 0 ;对于有符号数,右移时左边最高位补符号位数。
说明:
n 位运算符除 ~ 以外,均为二元运算符,既要求两侧各有一个运算量 n 运算量只能是整型(short,int,long)或字符型(char)的数据,不能为实型数据。 六、实现两个变量值的交换
方法1:
int temp;
temp = a;
a = b;
b = temp;
方法2: ( 此方法不适合过大数据之间的转换,因为可能发生数据的溢出问题)
b = a + b;
a = b - a;
b = b - a;
方法 3;
a = a ^ b;
b = a ^ b;
a = a ^ b;
|