条件编译:
#if expression
Statement sequence
#elifexpression1
Statement sequence1
#elifexpression2
Statement sequence2
. . . . . .
#elifexpressionN
Statement sequenceN
#endif
一个#if只能与一个#endif相匹配。
1. #ifdef 标识符
程序段1
#else
程序段2
#endif
如果标识符已被#define命令定义过则对程序段1进行编译,否则对程序段2进行编译,如果没有程序段2,#else可以没有。
2.#ifndef 标识符
程序段1
#else
程序段2
#endif
如果标识符未被#define命令定义过则对程序段1进行编译,否则对程序段2进行编译,如果没有程序段2,#else可以没有。
3.#if 常量表达式
程序段1
#else
程序段2
#endif
如果常量表达式的值为真(非0),对程序段1进行编译,否则对程序段2进行编译。
4.#if指令与defined编译时一起使用,例如:
#ifdefined MY 或 #ifdef MY
5.连接运算符“##”可以把两个独立的字符串连接成一个字符串。
6.预定义宏:
C规范了5个固有的预定义宏,分别为:
_DATE_ 进行预处理的日期(“Mm dd yyyy”形式的字符串)
_FILE_ 代表当前源代码文件名的字符串文字
_LINE_ 代表当前源代码中的行号的整数常量
_TIME_ 源文件编译时间,格式“hh: mm: ss”
_func_ 当前所在函数名
7.C语言提供了六种位运算符
&-按位与
|-按位或
^-按位异或
~-取反
<<-左移
>>-右移
8.Heap-堆,堆空间手动分配释放,是很大的自由存储区;
Steak-栈,栈空间由操作系统自动分配/释放;
9.Static变量:存储在静态存储区,未经初始化的全局静态变量会被程序自动初始化为0;全局静态变量Vs局部静态变量
10.数据类型的转换特性:赋值时的类型转换实际上是强制的。
浮点型Vs整数
单、双精度浮点型
Char型与int型
Int与long型
将一个unsigned型数据赋给一个占据同样长度存储单元的整型变量时,原值照赋,内部的存储方式不变,但是外部值却可能改变。