1 / 27
文档名称:

C语言程序设计.ppt

格式:ppt   大小:84KB   页数:27页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

C语言程序设计.ppt

上传人:wenjiaosuoa 2017/8/16 文件大小:84 KB

下载得到文件列表

C语言程序设计.ppt

相关文档

文档介绍

文档介绍:第17讲编译预处理和位运算
计算机与通信工程学院
第17讲编译预处理和位运算
本讲主要内容
宏定义
不带参数的宏
带参数的宏
文件包含
一般形式
文件包含的有关说明
位运算
教学目标
了解编译预处理的概念,了解宏的概念。
了解文件包含的概念,熟练掌握文件包含命令include的用法。
了解位运算的概念,掌握按位与、按位或、按位异或、取反、左移位、右移位等六种位运算。
了解位段的概念,熟悉位段的特点,掌握位段结构和位段变量的定义和使用方法。
第17讲编译预处理和位运算
一、宏定义
不带参数的宏
不带参数的宏是用一个标识符代替一个字符串,其一般形式如下:
#define 宏名宏体
其中的“#”表示这是一条预处理命令。
凡是以“#”开头的均为预处理命令。
“define”为宏定义命令。
宏名是一个标识符,宏体可以是一个字符串,也可以是一个数值,也可以是一个表达式等。
例如:#define PI
一、宏定义
例17-1 宏定义应用举例。
#define TWO 2
#define MSG "I love c language."
#define FMT " number is %d\n"
main()
{
    int number=TWO;
    printf(FMT, number);
    printf("%s\n",MSG);
}
一、宏定义
例17-2 计算圆面积。
#define PI
main()
{
float R=;
printf("S=PI*R*R=%f\n",PI*R*R);
}
一、宏定义
例17-3 计算圆的周长和面积。
#define R
#define PI
#deinfe L 2*PI*R /* 使用宏R和PI定义宏L */
#define S PI*R*R /* 使用宏R和PI定义宏S */
main()
{
printf("L=%f\nS=%f\n",L,S);
}
一、宏定义
例17-4输出格式定义为宏。
#define PR printf
#define NL "\n"
#define D "%d "
#define D1 D NL
#define D2 D D NL
#define D3 D D D NL
#define D4 D D D D NL
#define S "%s"
main()
{int a,b,c,d;
char string[]="This is
a string.";
a=1;b=2;c=3;d=4;
PR(D1,a);
PR(D2,a,b);
PR(D3,a,b,c);
PR(D4,a,b,c,d);
PR(S,string);
}
一、宏定义
关于宏定义的说明:
⑴宏名一般使用大写形式。
⑵使用宏可以提高程序的可读性和可移植性。
⑶宏定义是用宏名来表示一个字符串,在宏替换时又以该字符串取代宏名,这只是一种简单的代换。
⑷宏定义不是C语句,后面不能有分号。如果加入分号,则加入的分号将作为宏体的一部分。
⑸通常把#define命令放在一个文件的开头,使其在本文件全部有效。
⑹宏定义终止命令#undef结束先前定义的宏名。
⑺程序中用双引号括起来的字符串,即使与宏名相同,也不替换。
⑻宏定义允许嵌套,在宏定义的字符串中可以使用已经定义的宏名。在宏展开时由预处理程序层层替换。
⑼宏定义名仅用于编译预处理,不是程序变量,因此系统不会为它分配内存空间。
一、宏定义
带参数的宏
带参数宏定义的一般形式如下:
#define 宏名(参数表) 字符串
其中:⑴宏名后的参数表可以是一个参数,也可以是多个参数,当有多个参数时,各参数之间用“,”分割。
⑵用于宏体的字符串部分要包括参数表中的参数。
例如:#define max(x,y) x>y?x:y
宏替换按如下过程进行:对于程序中带实参的宏,按照宏定义中的字符串从左到右进行替换,当遇到宏中的形参时,就用程序语句中的宏实参取代它,对于宏定义字符串(宏体)中的非参数字符,则予以保留。