荆州职业技术学院C语言程序设计8优质PPT.ppt
- 文档编号:15068694
- 上传时间:2022-10-27
- 格式:PPT
- 页数:17
- 大小:159.50KB
荆州职业技术学院C语言程序设计8优质PPT.ppt
《荆州职业技术学院C语言程序设计8优质PPT.ppt》由会员分享,可在线阅读,更多相关《荆州职业技术学院C语言程序设计8优质PPT.ppt(17页珍藏版)》请在冰豆网上搜索。
在预编译时,将源程序中出现的宏名在预编译时,将源程序中出现的宏名PI替换为字符串替换为字符串“3.1415926”,这一替换过程称为这一替换过程称为“宏展开宏展开”。
#define:
宏定义命令:
宏定义命令#undef:
终止宏定义命令:
终止宏定义命令10/27/20222荆州职业技术学院信息技术系首页首页上页上页下页下页节节末页末页结束结束例例PI3.1415926main()floatl,s,r,v;
printf(inputradius:
);
scanf(%f,&
r);
/*输入圆的半径输入圆的半径*/l=2.0*PI*r;
/*圆周长圆周长*/s=PI*r*r;
/*圆面积圆面积*/v=4.0/3.0*PI*r*r*r;
/*球体积球体积*/printf(l=%10.4fns=%10.4fnv=%10.4fn,l,s,v);
10/27/20223荆州职业技术学院信息技术系首页首页上页上页下页下页节节末页末页结束结束关于宏定义的说明关于宏定义的说明:
1、一般宏名用大写字母表示。
(变量名一般用小写字母)。
、一般宏名用大写字母表示。
2、使用宏可以提高程序的可读性和可移植性。
如上述程序中,多处、使用宏可以提高程序的可读性和可移植性。
如上述程序中,多处需要使用需要使用值,用宏名既便于修改又意义明确。
值,用宏名既便于修改又意义明确。
3、宏定义是用宏名代替、宏定义是用宏名代替字符串字符串,宏扩展时仅作简单替换,不检查语,宏扩展时仅作简单替换,不检查语法。
语法检查在编译时进行。
法。
4、宏定义不是、宏定义不是C语句,后面不能有分号。
如果加入分号,则连分号语句,后面不能有分号。
如果加入分号,则连分号一起替换。
一起替换。
#definePI3.1415926;
area=P*r*r;
在宏扩展后成为:
area=3.1315926;
*r*r;
结果,在编译时出现语法错误。
10/27/20224荆州职业技术学院信息技术系首页首页上页上页下页下页节节末页末页结束结束5、通常把、通常把#define命令放在一个文件的开头,使其在本文件全部有命令放在一个文件的开头,使其在本文件全部有效。
(效。
(#define定义的宏仅在本文件有效,在其它文件中无效,这定义的宏仅在本文件有效,在其它文件中无效,这与全局变量不同)。
与全局变量不同)。
6、宏定义终止命令、宏定义终止命令#undef结束先前定义的宏名。
结束先前定义的宏名。
#defineG9.8main()#undefG/*取消取消G的意义的意义*/f1()10/27/20225荆州职业技术学院信息技术系首页首页上页上页下页下页节节末页末页结束结束7、宏定义中可以引用已定义的宏名。
、宏定义中可以引用已定义的宏名。
例例8.2#defineR3.0#definePI3.1415926#deinfeL2*PI*R#defineSPI*R*Rmain()printf(L=%fnS=%fn,L,S);
8、对程序中用双引号括起来的字符串,即使与宏名相同,也不替换。
、对程序中用双引号括起来的字符串,即使与宏名相同,也不替换。
例如上例的例如上例的printf语句中,双引号括起来语句中,双引号括起来L和和S不被替换。
不被替换。
10/27/20226荆州职业技术学院信息技术系首页首页上页上页下页下页节节末页末页结束结束二、带参数的宏二、带参数的宏一般形式:
#define宏名(参数表)宏名(参数表)字符串字符串带参数的宏在展开时,不是进行简单的字符串替换,而是进行参数带参数的宏在展开时,不是进行简单的字符串替换,而是进行参数替换。
例、替换。
例、10/27/20227荆州职业技术学院信息技术系首页首页上页上页下页下页节节末页末页结束结束例例#definePI3.1415926#defineS(r)PI*r*rmain()floata,area;
a=3.6;
area=S(a);
printf(r=%fnarea=%fn,a,area);
说明:
带参数的宏展开时,用实参字符串替换形参字符串,注意可能发带参数的宏展开时,用实参字符串替换形参字符串,注意可能发生的错误。
比较好的办法是宏定义的形参加括号。
生的错误。
10/27/20228荆州职业技术学院信息技术系首页首页上页上页下页下页节节末页末页结束结束10/27/20229荆州职业技术学院信息技术系首页首页上页上页下页下页节节末页末页结束结束例例返回多个值的宏定义。
返回多个值的宏定义。
#definePI3.1415926#defineCIRCLE(R,L,S,V)L=2*PI*R;
S=PI*R*R;
V=4/3*PI*R*R*Rmain()floatr,l,s,v;
/*半径、圆周长、圆面积、球体积半径、圆周长、圆面积、球体积*/scanf(%f,&
CIRCLE(r,l,s,v);
printf(r=%6.2f,l=%6.2f,s=%6.2f,v=%6.2fn,r,l,s,v);
输出结果输出结果:
10/27/202210荆州职业技术学院信息技术系首页首页上页上页下页下页节节末页末页结束结束9.2文件包含(#include)文件包含命令的一般格式是:
文件包含命令的一般格式是:
#include“文件名文件名”作用:
预处理时,把作用:
预处理时,把“文件名文件名”指定的文件内容复制到本文件,再对合并后指定的文件内容复制到本文件,再对合并后的文件进行编译。
的文件进行编译。
例、例、10/27/202211荆州职业技术学院信息技术系首页首页上页上页下页下页节节末页末页结束结束在在file1.c文件中,有文件包含命令文件中,有文件包含命令#includefile2.c,预处理时,预处理时,先把先把file2.c的内容复制到文件的内容复制到文件file1.c,再对,再对file1.c进行编译。
进行编译。
从理论上说,从理论上说,#include命令可以包含任何类型的文件,只要这些文命令可以包含任何类型的文件,只要这些文件的内容被扩展后符合件的内容被扩展后符合C语言语法。
语言语法。
一般一般#include命令用于包含扩展名为命令用于包含扩展名为.h的的“头文件头文件”,如,如stdio.h、string.h、math.h。
在这些文件中,一般定义符号常量、宏,或。
在这些文件中,一般定义符号常量、宏,或声明函数原型。
声明函数原型。
(2)文件)文件file1.c#includeprint_format.h“main()inta,b,c,d;
charstring=CHINA;
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);
程序员也可以把自己定义的符号常程序员也可以把自己定义的符号常量、宏,或函数原型放在头文件中,量、宏,或函数原型放在头文件中,用用#include命令包含这些头文件。
命令包含这些头文件。
(1)文件)文件print_format.h#definePRprintf#defineNLn#defineD%d#defineD1DNL#defineD2DDNL#defineD3DDDNL#defineD4DDDDNL#defineS%s10/27/202212荆州职业技术学院信息技术系首页首页上页上页下页下页节节末页末页结束结束说明:
1、一个、一个include命令只能指定一个被包含文件,如果要包含命令只能指定一个被包含文件,如果要包含n个文件,用个文件,用n个个Include命令。
命令。
2、#include命令的文件名,可以使用两种括号。
命令的文件名,可以使用两种括号。
#includefile2.h先在引用被包含文件的目录查找先在引用被包含文件的目录查找file2.h文件,若没有,再到系统文件,若没有,再到系统指定的目录查找。
指定的目录查找。
#include仅在系统指定的目录查找文件仅在系统指定的目录查找文件file2.h。
10/27/202213荆州职业技术学院信息技术系首页首页上页上页下页下页节节末页末页结束结束9.3条件编译预处理程序提供了条件编译的功能。
可以按不同的条件去编译不同的程序部分,因而产生不同的目标代码文件。
这对于程序的移植和调试是很有用的。
条件编译有三种形式,下面分别介绍:
10/27/202214荆州职业技术学院信息技术系首页首页上页上页下页下页节节末页末页结束结束1.第一种形式:
#ifdef标识符程序段1#else程序段2#endif它的功能是,如果标识符已被#define命令定义过则对程序段1进行编译;
否则对程序段2进行编译。
如果没有程序段2(它为空),本格式中的#else可以没有,即可以写为:
#ifdef标识符程序段#endif10/27/202215荆州职业技术学院信息技术系首页首页上页上页下页下页节节末页末页结束结束2.第二种形式:
#ifndef标识符程序段1#else程序段2#endif与第一种形式的区别是将“ifdef”改为“ifndef”。
它的功能是,如果标识符未被#define命令定义过则对程序段1进行编译,否则对程序段2进行编译。
这与第一种形式的功能正相反。
10/27/202216荆州职业技术学院信息技术系首页首页上页上页下页下页节节末页末页结束结束3.第三种形式:
#if常量表达式程序段1#else程序段2#endif它的功能是,如常量表达式的值为真(非0),则对程序段1进行编译,否则对程序段2进行编译。
因此可以使程序在不同条件下,完成不同的功能。
10/27/202217荆州职业技术学院信息技术系
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 荆州 职业技术学院 语言程序设计