今天,我们来学习其他数据类型,共计4中:枚举,预处理指令,文件包含,typedef.
一,枚举:
枚举是C语言中的一种基本数据类型,并不是构造类型,它可以用于声明一组常数。当一个变量有几个固定的可能取值时,可以将这个变量定义为枚举类型。比如,你可以用一个枚举类型的变量来表示季节,因为季节只有4种可能的取值:春天、夏天、秋天、冬天。
格式:
1).一般形式为:enum 枚举名 {枚举元素1,枚举元素2,……};
enum Season {spring, summer, autumn, winter};
2)同时定义枚举变量:
enum Season {spring, summer, autumn, winter} s;
3).省略枚举名称,直接定义变量:
enum {spring, summer, autumn, winter} s;
4).赋值:
可以给枚举变量赋枚举常量或者整型值
enum Season {spring, summer, autumn, winter} s;
s= spring;// 等价于 s = 0;
s=3; // 等价于 s = winter;
二.预处理指令:指的是在编译之前先将指令运算,选择性的编译码段,C语言提供的预处理指令主要有:宏定义、文件包含、条件编译.
1).宏定义:一般形式
#define 宏名 字符串
比如#define ABC 10
右边的字符串也可以省略,比如#define ABC
作用:它的作用是在编译预处理时,将源程序中所有"宏名"替换成右边的"字符串",常用来定义常量。
2).条件编译:在很多情况下,我们希望程序的其中一部分代码只有在满足一定条件时才进行编译,否则不参与编译(只有参与编译的代码最终才能被执行),这就是条件编译。
#if 条件1
...code1...
#elif 条件2
...code2...
#else
...code3...
#endif
1> 如果条件1成立,那么编译器就会把#if 与#elif之间的code1代码编译进去(注意:是编译进去,不是执行,很平时用的if-else是不一样的)
2> 如果条件1不成立、条件2成立,那么编译器就会把#elif 与 #else之间的code2代码编译进去
3> 如果条件1、2都不成立,那么编译器就会把#else 与#endif之间的code3编译进去
4> 注意,条件编译结束后,要在最后面加一个#endif,不然后果很严重(自己思考一下后果)
5> #if 和#elif后面的条件一般是判断宏定义而不是判断变量,因为条件编译是在编译之前做的判断,宏定义也是编译之前定义的,而变量是在运行时才产生的、才有使用的意义.
3).文件包含:其实我们早就有接触文件包含这个指令了, 就是#include,它可以将一个文件的全部内容拷贝另一个文件中。
1.第1种形式#include <文件名>
直接到C语言库函数头文件所在的目录中寻找文件
2.第2种形式 #include "文件名"
系统会先在源程序当前目录下寻找,若找不到,再到操作系统的path路径中查找,最后才到C语言库函数头文件所在目录中查找
4)typedef:
我们可以使用typedef关键字为各种数据类型定义一个新名字(别名)
例如:typedefint Integer,将int定义为新的名字Integer,定义变量的时候可以是Integer a = 0;
总结:
这些其他数据类型要求掌握,尤其是结构体,在以后OC中的学习还会用到.